动态打开一系列jquery手风琴

时间:2016-05-27 04:57:32

标签: javascript jquery loops each accordion

所以我试图迭代一类手风琴jquery对象,检查哪些是开放的,将它们添加到数组中,然后(在重置手风琴之后)重新打开之前打开的手风琴。这似乎是一个非常简单的问题,我道歉,但在我的搜索中,似乎问题只是一般使用jquery迭代,而不是迭代jquery对象的数组。我真的找不到答案。

这是我目前所拥有的,由于某种原因不起作用。首先,创建已经打开的手风琴阵列。

        $(".accordionClass").each(
            function(){
                if($(this).accordion("option", "active") !== false) {
                    activeArray.push($(this));
                }
            }
        );

这似乎有效。至少,activeArray.length给出正确数量的对象。

然后,我尝试在重新初始化之后打开这个数组中的所有手风琴。

    $.each(activeArray,
        function(){
            $(this).accordion({ active: 0 });
        }
    );

没有骰子。他们不开放。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

问题解决方案

在编写的问题中,您将jQuery对象($(this))推入到数组中,将其读出,然后将对象包装在另一个jQuery选择器中。

您应该只推送原生DOM对象this

问题解决方案

这里的具体问题(在这个答案的评论中找到,而不是问题本身)是对象被销毁,然后创建一个类似的对象(来自相同的标记)。这通常是不好的做法,但它也会导致问题出现问题:推送到数组中的this引用的对象在读出时不再存在。

相反,您应该推送this.id,然后使用jQuery重新选择$('#'+this)的副本。