我的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
答案 0 :(得分:4)
通过链接使用.filter()
:
$('span:contains("Compering")').filter('span:contains("Exam")')
.find()
在这种情况下不起作用,因为它试图搜索匹配的元素,而不是匹配的元素本身。 :)
$
在所有地方搜索,.filter()
搜索匹配的结果。
<强>段强>
$(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;
输出: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);
如果您需要对每个元素进行操作