0

我正在使用手风琴,其中点击功能是为了grand child点击它必须添加一个class到它的grand parent

我知道这种parent()方法是用来指导父母的。还有更多不清楚的是parentsUntil()如何联系祖父母?

我的小提琴

在那里,当点击'.accordion > .head > h1 > span.httpmethod > a.trigger'班级时.active,必须将其添加到其祖父母.accordion检查小提琴并给我一些想法。如果问题重复意味着对不起。

4

3 回答 3

1

我想你需要.closest()

$('.accordion a.trigger').click(function(){
     $(this).closest('.accordion').toggleClass('active'); 
})

演示:小提琴

于 2013-09-28T07:36:02.313 回答
0

我更喜欢使用 eq ( http://api.jquery.com/eq/ ) 过滤器从单击的目标元素中过滤第三个父项。看看这个片段!

<html>
<head>
    <script type="text/javascript">
        $(".trigger").bind("click", function(event) {
            var el = $(event.currentTarget);
            var parent = el.parents().eq(3);
            parent.toggleClass("active", true);
        });
    </script>
</head>
<body>
    <div class="accordion">
        <div class="head">
            <h1>
                <span class="httpmethod">
                    <a class="trigger">Link 1</a>
                </span>
            </h1>
        </div>
    </div>
    <div class="accordion">
        <div class="head">
            <h1>
                <span class="httpmethod">
                    <a class="trigger">Link 2</a>
                </span>
            </h1>
        </div>
    </div>
    <div class="accordion">
        <div class="head">
            <h1>
                <span class="httpmethod">
                    <a class="trigger">Link 3</a>
                </span>
            </h1>
        </div>
    </div>
</body>

于 2013-09-28T07:53:28.480 回答
0

你可以使用 $(".selector").parent().parent()。唯一的问题是当 dom 结构发生变化时,您也必须更改您使用的 .parent() 数量。

于 2013-09-28T07:37:32.673 回答