我的HTML:
<div class="red-box">
<h2>
<a href="#">My Cars</a>
</h2>
<div class="block_left layout2">
<div class="part1">
<div class="gallery_block">
<div class="block_topic">1</div>
<div class="block_topic">2</div>
<div class="block_topic">3</div>
</div>
</div>
</div>
<div class="red-box">
<h2>
<a href="#">My Bikes</a>
</h2>
<div class="block_left layout2">
<div class="part1">
<div class="gallery_block">
<div class="block_topic">1</div>
<div class="block_topic">2</div>
<div class="block_topic">3</div>
</div>
</div>
</div>
</div>....
在<h2><a href="">TITLE</a></h2>
中有很多不同标题的“红盒”div,如上例所示。
我需要选择和更改一个 - “红框” - &gt; “block_left” - &gt; “part1” - &gt; “gallery_block” - &gt; “block_topic”,其中包含“3”并仅在单个“red-box”中执行<h2><a href="">My Cars</a></h2>
所以,我正在做以下事情:
if ($(".red-box").children("h2").children("a").children("span:contains('My Cars')").length > 0)
{
// it finds the "red-box" which i need but how to select
// <div class="block_topic">3</div> in the "red-box" whose href has "My Cars"?
}
由于
答案 0 :(得分:1)
$('.red-box').has('h2:contains(My Cars)').find('div.block_topic').eq(2);
答案 1 :(得分:0)
试试这个
$('.red-box').has('h2:contains("My Cars")').find('div.block_topic:contains("3")');
$('.red-box').has('h2:contains("My Cars")')
=&gt;得到包含“我的车”的.red-box。
.find('div.block_topic:contains("3")')
=&gt;找到包含3
答案 2 :(得分:0)
如果我理解正确,你不需要if()
表达式,只需要一个适当表达的jQuery选择表达式。
此外,特别是如果要推广表达式,则应避免使用:contains
,这是不加选择的,因为它会找到嵌入子字符串与感兴趣的字符串匹配的元素。
要选择完全匹配文字的元素,您可以使用.filter()
,如下所示:
$(".red-box h2 a").filter(function() {
return $(this).text() === 'My Cars';
}).closest(".red-box").find(".block_topic").filter(function() {
return $(this).text() === '3';
});
或者,如果您想要.block_topic
已知索引:
$(".red-box h2 a").filter(function() {
return $(this).text() === 'My Cars';
}).closest(".red-box").find(".block_topic").eq(2);