我想选择具有div
后代的所有cite
,并且cite
后代的HTML包含一些text
。我试过了:
$('div')
.filter('cite')
.filter(function() {
return $(this).html().match('text');
})
和此:
$('div')
.filter('div cite')
.filter(function() {
return $(this).html().match('text');
})
但它不起作用。这里缺少什么?
也就是说,我想在以下HTML中选择第3个div
。
HTML:
<div id="abcd">text1 text2</div>
<div id="abccd">text1 text2</div>
<div id="abcccd">
<cite><b>text1</b>text2</cite>
</div>
<div id="abd">text1 text2</div>
编辑:
我想要选择的是不 $('div cite')
。我想选择$('div')
,其中div
有cite
个后代,而cite
后代的内容包含一些文字。
答案 0 :(得分:5)
使用<span class="meta-label"> <?php echo $database['XML'] ?> </span> <span class="meta-content">Content</span></li>
选择器:
:contains()
感谢@JonSG:
OP。已经在评论中提出了一个不同的答案,如何这样做 只需使用filter()即可完成,而无需使用 nearest()或parent()。我不是很热衷于这个答案,但你可能会这样做:
$("div").find("cite:contains('text')").closest("div");
或者:
var target = $("div").filter(function() {
return $(this).find("cite:contains('text')").length !== 0;
});
$(target).css("background-color", "coral");
答案 1 :(得分:2)
这个怎么样?
$("div").has("cite:contains('text')");
答案 2 :(得分:0)
你可以试试这个:
var target = $("div").filter(function() {
return /text/.test($(this).find("cite").html());
});
$(target).css("background-color", "tomato");
$("div cite").each(function() {
` // $(this).text() get the text of cite`
答案 3 :(得分:0)
要达到预期效果,请使用以下选项
$( "cite" ).each(function( index ) {
console.log( $( this ).text() );
});