我有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: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>
s 存在于不同的 <div>
中s。
关于jquery - 如何查找另一个范围内包含文本的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35126548/