Jquery手风琴关闭然后打开
我使用jquery accordion插件在页面上设置了一些手风琴,这样我就可以实现全部展开并折叠所有功能。
每个ID元素都是自己的手风琴,下面的代码可以关闭它们,不管哪一个已经打开:
$("#contact, #address, #email, #sales, #equipment, #notes, #marketingdata")
.accordion("activate", -1)
;
我的问题是全部展开。 当我把它们全部用这个代码展开时:
$("#contact, #address, #email, #sales, #equipment, #notes, #marketingdata")
.accordion("activate", 0)
;
有些合同会根据他们以前是否打开而扩大。
我的想法是纠正这个问题,将所有这些全部折叠起来,然后在点击展开全部内容时全部展开。 但是,该代码无法正确执行:
$("#contact, #address, #email, #sales, #equipment, #notes, #marketingdata")
.accordion("activate", -1)
;
$("#contact, #address, #email, #sales, #equipment, #notes, #marketingdata")
.accordion("activate", 0)
;
它只会命中第二个命令,而不是先关闭它们。 有什么建议么?
我不确定你在做什么,但这是我最好的猜测。 在所有手风琴中,您希望“全部打开”按钮打开所有已关闭的手风琴(即没有部分显示)。 我会通过使用filter()
$("#contact, #address, #email, #sales, #equipment, #notes, #marketingdata")
.filter(":not(:has(.selected))")
.accordion("activate", 0)
;
那是你之后的事情吗?
编辑以解释该过滤功能:
过滤器函数只是通过过滤器运行您的当前选择,删除任何不匹配的内容。 它有两种不同的形式:一种是你传入常规jQuery查询,就像我上面所做的一样,另一种是你可以定义一个函数来过滤。 如果函数返回false,那么该元素将被删除。
在这种情况下,查询将删除任何不包含( :not
)( :has
)具有“selected”(. .selected
)类的子.selected
。 我在这里使用了.selected
选择器,因为这是手风琴为当前打开的面板添加的内容。
如果你只有一个手风琴,或者你给每个手风琴一些标识符,比如一个类名,那么你可以大大减少整个脚本。 让我们说,对于你想变成手风琴的每一个元素,你都会给它一个“一致”的类。
$(".accord:not(:has(.selected))").accordion("activate", 0);
由于您可以轻松地在将来添加更多手风琴,如果您愿意并且可以处理该手风琴,它更易于阅读和维护。
过滤器的文档在这里:http://docs.jquery.com/Traversing/filter
jQuery('#accordion').accordion({
active:-1,
});
我遇到了同样的问题,并通过使用JQuery的each()函数在将焦点设置为item [0]时折叠的简短代码解决了这个问题,因此可以恢复正常的导航。
http://spstring.jeffthink.com/?p=49
链接地址: http://www.djcxy.com/p/95403.html