jQuery手风琴:如何只调用一次
我有很多手风琴元素是通过AJAX函数添加的。
当通过AJAX创建元素时,我会调用该函数:
$( ".accordion" ).accordion({ active: false, collapsible: true, heightStyle: "content" });
但如果在其他元素仍在加载时打开一个手风琴元素,刚才打开的第一个元素在再次调用前一个命令时就会被关闭。
如何让 $( ".accordion" ).accordion() 即使对于后续通过AJAX创建的元素也只调用一次?
解决方案
以某种方式标记该元素,表示它已经是一个已激活的手风琴。最合适的做法是通过添加自定义属性,因为这是最符合语义的做法。不过,你也可以添加一个类。
然后只查找未被标记的元素。
对于名为 data-accordion-initialised 的自定义属性,代码将会是:
// find all elements not yet initialised
$( ".accordion:not([data-accordion-initialised])" )
// add the attribute
.attr( "data-accordion-initialised", "yes" )
// initialise the accordion
.accordion({ active: false, collapsible: true, heightStyle: "content" });
使用自定义类则为:
// find all elements not yet initialised
$( ".accordion:not(.accordion-initialised)" )
// add the class
.addClass( "accordion-initialised" )
// initialise the accordion
.accordion({ active: false, collapsible: true, heightStyle: "content" });
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。