【问题标题】:How to get all element parents using jquery?如何使用 jquery 获取所有元素父级?
【发布时间】:2009-04-14 18:37:52
【问题描述】:

如何使用 jquery 获取所有元素父级?我想将这些父母保存在一个变量中,以便以后用作选择器。
比如<div><a><img id="myImg"/></a></div>
GetParents('myImg');将返回“div a”之类的东西

【问题讨论】:

    标签: javascript jquery html dom


    【解决方案1】:

    /// 获取所有父元素的数组:

    allParents = $("#myElement").parents("*")
    

    /// 通过元素的父元素获取嵌套选择器:

    function GetParents(id) {
        var parents = $("#" + id).parents("*");
        var selector = "";
        for (var i = parents.length-1; i >= 0; i--) {
            selector += parents[i].tagName + " ";
        }
    
        selector += "#" + id;
    
        return selector;
    }
    

    GetParents('myImage') 将返回您的嵌套选择器:HTML BODY DIV A #myImage

    请注意为什么你想要这个,但它可以作为选择器重复使用。

    【讨论】:

    • '#' + id 不安全。如果“id”包含[] 或其他特殊字符(合法),则此方法无效。最好在这里使用document.getElementById,或者至少正确地转义它。
    【解决方案2】:

    你不需要抓取它们的选择器,因为你可以在之后直接使用 jQuery。

    如果你以后想使用所有的父母,你可以这样做:

    var parents = $("#element").parents();
    for(var i = 0; i < parents.length; i++){
      $(parents[i]).dosomething();
    }
    

    【讨论】:

      【解决方案3】:

      每个元素只有一个真正的父元素。要访问并保存它,请编写以下内容:

      myParent = $("#myElement").parent();
      

      如果您也需要父母父母,请使用 .parents()

      有关详细信息,请参阅文档:

      http://docs.jquery.com/Traversing/parent#expr

      http://docs.jquery.com/Traversing/parents#expr

      【讨论】:

      • 但是那个父母有一个父母等等。
      【解决方案4】:

      您可以使用 parents() 让您的直系父母及其父母上树。您还可以将选择器作为 arg 传递,以仅获取符合特定条件的父母。例如:

      $('#myelement').parents('[id$=container]')

      获取所有具有以文本“容器”结尾的 id 属性的父母

      【讨论】:

        【解决方案5】:

        你可以像这样获取一个元素父级的所有标签:

        var sParents = $('#myImg').parents('*').map(function() {                
              return this.tagName;
            }).get().join(' ');
        

        您也可以将 this.tagName 替换为 this.id 例如或其他属性

        【讨论】:

        • 喜欢这个解决方案,将对其进行测试,但接缝很巧妙。
        猜你喜欢
        • 2023-03-24
        • 1970-01-01
        • 1970-01-01
        • 2020-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多