jquery - 如何查找另一个范围内包含文本的范围

标签 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: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/

相关文章:

javascript - 如何将数组中的 json 插入 highcharts?

css - 两个不同颜色的独立 CSS 样式背景图像

jquery - 选择多个 ID - 必须选中两个复选框

javascript - 带有动态可观察值和 html 模板的 knockout 网格

javascript - Jquery:根据下拉列表的值启用/禁用对于动态生成的输入不起作用

javascript - 一次在多个 jQuery 元素上绑定(bind)一个函数

jquery - 使用 jQuery 检测 HTML5 的自动对焦功能

jquery - 获取 Angular 2 中的文档高度

javascript - 根据总数和奇偶数分割JSON对象

javascript - 我有一个样式化的 td 类,它使我的评论按钮看起来像一个提交