检查(if)并在jquery中选择children / parent

时间:2013-04-29 11:00:17

标签: jquery parent contains children

我的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"?
}

由于

3 个答案:

答案 0 :(得分:1)

$('.red-box').has('h2:contains(My Cars)').find('div.block_topic').eq(2);

http://jsfiddle.net/L5YBf/1/

答案 1 :(得分:0)

使用.has():contains ..

试试这个

$('.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

的div.block_topic

答案 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);