2

我有这个 html 代码示例:

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

从上面的 html 代码示例中,我想target从带有 id 的 div 中获取所有父母的类标签名称(当接收到点击事件时)stophere

我试过这段代码:

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

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

让所有父母target失望的正确方法是什么stophere

4

2 回答 2

4

您可以使用该parentsUntil方法

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

请注意,它是不包含的,因此我们传递的父#stophere元素也包含该元素

小提琴

于 2015-04-30T21:17:08.767 回答
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);
    });

小提琴

于 2015-05-01T10:37:20.653 回答