【问题标题】:JQuery accordion not initializing in loopJQuery手风琴没有在循环中初始化
【发布时间】:2020-03-08 22:01:35
【问题描述】:

我在一个页面上有一堆 JQuery 手风琴,都带有“手风琴”类,我想初始化它们。我知道我可以做到:

var accordions = $( ".accordion" );
accordions.accordion();

但是,我需要根据它们的属性使用稍微不同的参数来初始化它们。所以我尝试以下代码:

var accordions = $( ".accordion" );        
for (var i = 0; i < accordions.length; i++)
{
    var autoExpand = accordions[i].getAttribute("autoExpand"); // get attribute            
    accordions[i].accordion({ 
            animate: 100, 
            active: location.href.includes(autoExpand) ? 0 : false, 
            collapsible: true, 
            heightStyle: "content",
            icons: { header: "ui-icon-plus", activeHeader: "ui-icon-minus" } 
       });  
} 

但我收到此错误: jquery-3.4.1.min.js:2 Uncaught TypeError:accordions[i].accordion 不是函数

为什么会这样?

【问题讨论】:

  • 无循环手风琴是否工作?
  • 您的文档中是否包含 jquery ui 参考?
  • 是的,accordions.accordion();有效,但我在循环中收到错误消息。

标签: javascript jquery jquery-ui-accordion


【解决方案1】:

你可以这样做,并使用i的增量值设置条件,或者你可以增加函数中的参数

function setAcc(a,i){
$(a).accordion({ 
            animate: 100, 
            active: location.href.includes(autoExpand) ? 0 : false, 
            collapsible: true, 
            heightStyle: "content",
            icons: { header: "ui-icon-plus", activeHeader: "ui-icon-minus" } 
       });  

}

var accordions = $( ".accordion" );        
for (var i = 0; i < accordions.length; i++)
{

 setAcc(accordions,i);   

} 

【讨论】:

  • 我不太明白为什么我必须这样做,但您的解决方案有效。谢谢卡姆莱什
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-19
  • 2013-04-06
  • 2022-01-13
  • 2011-02-01
  • 2013-11-01
  • 1970-01-01
相关资源
最近更新 更多