【问题标题】:jQuery how to loop through more than 1 sibling elementjQuery如何循环超过1个兄弟元素
【发布时间】:2019-04-01 23:12:55
【问题描述】:

我有一个 jQuery 项目,我必须遍历 h2 标头列表,但在每个 h2 标头中,我必须遍历它们的兄弟姐妹。每个标头有超过 1 个同级。现在我只知道如何去使用 .next() 函数的 1 个兄弟姐妹。有人可以帮我在不改变我初始代码方向的情况下遍历兄弟姐妹列表吗?

<script>
// Code Option 1
    function putSiblingsInTableForEachH2() {
        // line above sets function that will ultimately store siblings of each h2.toggler into a HTML table
        var siblingsGoInTable = [];
        // line creates empty array that will hold elements that will eventually go into HTML table
        var togglerHeaders = $("h2.toggler");
        // line above sets variable togglerHeaders to all h2 elements with a class of ".toggler"
        for (i = 0; i < togglerHeaders.length; i++) {
            // line above is a for loop that loops through variable togglerHeaders (for its entire length)
            var currentH2Element = togglerHeaders[i];
            // line above sets variable currentH2Element to togglerHeaders at position i
            // so when i starts at 0 currentH2Element is set to the first element in togglerHeaders which is the first h2.toggler
            for (j = 0; j < currentH2Element.nextAll(); j++) {
                if (currentH2Element.nextAll() !== currentH2Element.val()) {
                    $(siblingsGoInTable).wrapAll("<table></table>");
                } // line ends if statement
            } // line above closes for loop 
        } // line ends for loop
    } // line ends function
    putSiblingsInTableForEachH2();
    // line above actually runs function
</script>

【问题讨论】:

    标签: javascript jquery loops next


    【解决方案1】:

    您可以使用the .siblings() method 来实现此目的。

    因此,这些方面的内容可能对您有用:

    <script>
        function putSiblingsInTableForEachH2() {
            var siblingsGoInTable = [];
    
            var togglerHeaders = $("h2.toggler");
    
            for (var i = 0; i < togglerHeaders.length; i++) {
    
                var currentH2Element = togglerHeaders[i];
    
                // Access siblings like this
                var siblings = $(currentH2Element).siblings();
    
                for (var j = 0; j < siblings.length; j++) {
    
                    var siblingToH2 = siblings[j];
                    // Do what you need to do with sibling element here
                }
            }
        }
    
        putSiblingsInTableForEachH2();
    
    </script>
    

    【讨论】:

    • 非常感谢您的帮助。唯一的问题是,当我输入代码时,我收到了这条线的错误消息 > var Siblings = currentH2Element.siblings();
    • 表示行不是函数
    • 嗨@Aishah91,不客气-刚刚更新了答案。这有帮助吗?
    • 是的。谢谢你。我其实还有一个问题。如何从这个 h2 标签列表的第一个两个元素中删除一个类。我使用 .removeClass 方法尝试了许多组合,但它不断从所有组合中删除该类。
    猜你喜欢
    • 2018-06-29
    • 2011-11-16
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    • 2021-09-19
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多