jquery - 如何查找包含另一个span的文本的span

时间:2016-02-01 09:06:24

标签: jquery html jquery-selectors

我的span包含“比较”文字。在其中我有另一个包含'考试'的范围。

我可以分别抓住每一个:

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

另一个:

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

事情是第二个条件捕获的项目太多,所以我想在一个范围内抓住一个跨度。

更新:尝试了:

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

任何想法?

修改

在我的问题中发现了这个错误 跨度不包含在另一个跨度内,而是在“compering”span parent li中。 通过$('span:contains("Compering")').closest('li').find('span:contains("Exam")')解决了这个问题 谢谢@Praveen Kumar

2 个答案:

答案 0 :(得分:4)

通过链接使用.filter()

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

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

$在所有地方搜索,.filter()搜索匹配的结果。

<强>段

&#13;
&#13;
$(function () {
  $('span:contains("Compering")').filter('span:contains("Exam")').css("background", "#ccf");
});
&#13;
<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>
&#13;
&#13;
&#13;

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

<强>更新

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

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

这是因为,<span> s位于不同的<div> s。

答案 1 :(得分:-2)

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

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