jquery - 如何在另一个跨度内找到包含文本的跨度

jquery - how to find a span containing text withing another span

我有 span 包含文本 'Compare'。在其中我有另一个包含 'Exam' 的跨度。

我可以一个一个抢:

$('span:contains("Compering")')
[<span class=​"prop">​…​</span>​] # works

另一个:

$('span:contains("Exam")')
[<span class=​"prop">​…​</span>, ....​] #works

问题是第二个条件捕获了太多项目,所以我想在一个跨度内抓取一个跨度。

更新: 尝试:

$('span:contains("Compering")').find('span:contains("Exam")')
[]

有什么想法吗?

编辑

在我的问题中找到了错误 该跨度不包含在另一个跨度内,而是包含在 'compering' 跨度父 li 中。 $('span:contains("Compering")').closest('li').find('span:contains("Exam")') 解决了 谢谢@Praveen Kumar

通过链接使用 .filter()

$('span:contains("Compering")').filter('span:contains("Exam")')

.find() 在这种情况下不起作用,因为它试图在匹配元素内部搜索,而不是匹配元素本身。 :)

$ 到处搜索,.filter() 在匹配的结果中搜索。

片段

$(function () {
  $('span:contains("Compering")').filter('span:contains("Exam")').css("background", "#ccf");
});
<script src="https://code.jquery.com/jquery-2.1.4.js"></script>
<span class="prop">English Exam</span><br>
<span class="prop">Maths Exam</span><br>
<span class="prop">Compering Exam</span><br>
<span class="prop">Physics Exam</span><br>
<span class="prop">Computer Exam</span>

输出:http://output.jsbin.com/joyawemaja

更新:

根据 OP 当前的 HTML 设置,工作代码将是:

$('span:contains("Compering")').closest('li').find('span:contains("Exam")')

这是因为 <span> 是在不同的 <div> 中找到的。

var count = 0;
$('span:contains("Compering")').each(function () {
    if ($(this).text().indexOf('Exam') > -1) {
        count++;
    }
});
alert(count);

如果需要对每个元素进行操作