查找从父级到子级的元素

时间:2014-07-08 04:30:34

标签: jquery

我有几列(ul)包含列表(li)。当我点击其中一个元素时,我想首先在列表中找到一个元素' all'

<div id=1>
    <ul>
        <li class="list all">ALL</li>
        <li class="list">1</li>
        <li class="list">2</li>
    </ul>
    <ul>
        <li class="list">3</li>
        <li class="list">4</li>
    </ul>
    <ul>
        <li class="list">5</li>
        <li class="list">6</li>
    </ul>
</div>
<div id=2>
    <ul>
        <li class="list all">ALL</li>
        <li class="list">1</li>
        <li class="list">2</li>
    </ul>
    <ul>
        <li class="list">3</li>
        <li class="list">4</li>
    </ul>
    <ul>
        <li class="list">5</li>
        <li class="list">6</li>
    </ul>
</div>

点击任何一个类=&#34;列表&#34;,我想添加类&#34;选择&#34;对于具有class =&#34; all&#34;的元素,但仅适用于同一个包含div的元素。 我似乎无法使用正确的选择器来找到它

parent = $(this).parent().parent().children().$('.all').addClass('selected');

但它不起作用,我不确定如何选择包含div中的第一个ul。

4 个答案:

答案 0 :(得分:0)

您可以使用.closest()查找所点击的div的{​​{1}}父项,然后使用.find()list。all` element

to find the

演示:Fiddle

答案 1 :(得分:0)

尝试,   使用closest来查找div类型的直接父级,然后使用类all搜索后代并根据需要为其添加类

$(".all" , $(this).closest('div')).addClass('selected');

答案 2 :(得分:0)

您可以这样做:

$(".list").click(function(){

$(this).closest("div").find(".all").first().addClass("selected")

})

FIDDLE DEMO

点击 li div ,然后找到课程全部的第一个元素,并添加选定的课程。

修订代码:

$(".list").click(function(){

    $(".all.selected").removeClass("selected");
    $(this).closest("div").find(".all").first().addClass("selected")

    })

REVISED FIDDLE

答案 3 :(得分:-1)

使用.closest()查找父div并使用.find()查找.all li

parent = $(this).closest('div').find('.all:first').addClass('selected');