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);
如果需要对每个元素进行操作
我有 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);
如果需要对每个元素进行操作