获取所有父母信息直到指定的父母

时间:2015-04-30 21:13:01

标签: javascript jquery html dom parents

我有这个html代码示例:

<html>
    <body>
        <div>
            <div id="stophere">
               <h4 class="parentclass"> 
                <span class="target">Clicked</span>
               </h4>
            </div>
        </div>
    </body>
</html>

从上面的html代码示例中,我想从ID为target的div中获取所有父母的类stophere的标记名称(在接收点击事件时)。

我试过这段代码:

$(ev.target).parents()
            .map(function() {
            return this.tagName;
            })
            .get()
            .join( ", " );

但它包含stophere以上所有父母的标记名称。虽然我想要的结果只有1 div和1 h4

target的所有父母从stophere下来的正确方法是什么?

2 个答案:

答案 0 :(得分:4)

您可以使用parentsUntil方法

$(ev.target).parentsUntil($('#stophere').parent())

请注意,它不具有包容性,因此我们传递#stophere的父级以包含该元素

FIDDLE

答案 1 :(得分:0)

我不是声称这是一个很好的解决方案,但是如果adeneo的解决方案在您的情况下失败就可以使用,就像我的情况一样。

此代码使用find()方法检查遍历限制是否包含该限制行:

    jQuery('html').on("click", function (ev) {
        var elemparentid = jQuery(ev.target).closest("[id]").attr("id");
        var thisparents = jQuery(ev.target).parents()
            .map(function () {
// check if traversing limit is a children of current element or not, by using find() method
            if (jQuery(this).find("#" + elemparentid).length < 1) {
                return this.tagName;
            }
        }).get()
            .join(", ");
        alert(thisparents);
    });

https://github.com/spring-projects/spring-boot/blob/master/CONTRIBUTING.adoc