使用jquery .parentsUntil()或parent()获取html元素的祖父项

时间:2013-09-28 07:34:00

标签: jquery dom

我使用的手风琴在grand child点击功能的同时点击它,必须在其class

中添加grand parent

我知道parent()方法用于指导父级。而parentsUntil()更不清楚如何到达父级?

我的fiddle

在点击'.accordion > .head > h1 > span.httpmethod > a.trigger'时,.active课必须添加到其祖父.accordion检查那个小提琴并给我一些想法。如果问题重复意味着抱歉。

3 个答案:

答案 0 :(得分:1)

我认为你需要.closest()

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

演示:Fiddle

答案 1 :(得分:0)

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

答案 2 :(得分: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>