javascript - 无法在 jQuery 中刷新 Accordion

标签 javascript jquery jquery-ui

网页最初会有一个按钮。单击它后,它会添加两个 Accordion ,其标题存储在列表中,这是单击事件处理功能的一部分。该按钮应该创建新的 Accordion ,从同一列表中读取内容,无论单击多少次。

<script>
  $(function() {
    $("#updateAccordion").click(function() {
      new_array = ['new_item1', 'new_item2']
      $("#mainAccordion").empty();
      var accordion_data = ''
      for (var i = 0; i < new_array.length; i++) {
        accordion_data += '<h3><a href="#">' + new_array[i] + '</a></h3><div class="accordion">'
        accordion_data += '</div>'
      }

      $("#mainAccordion").append(accordion_data)
      $(".accordion").accordion({
        heightStyle: 'content',
        active: false,
        collapsible: true
      });
    });
  });

</script>
<button id="updateAccordion">Apply</button>

<div class="accordion" id="mainAccordion">
</div>

第一次就按预期工作了。但是,再次单击它时,它不会创建任何 Accordion 。它只是创建链接。

fiddle 可以找到here .

最佳答案

您的程序中发现了几个问题。

  • 您没有将 ; 放在表达式末尾。例如 var Accordion_data = ''
  • 如果您想使用 jquery Accordion ,那么您应该使用 jquery.jsjquery-ui.jsjquery-ui.css这些库。
  • 要更新您的 Accordion ,您应该首先销毁它,然后使用 Accordion 选项重新启动它。

按照下面的代码操作,效果很好。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.4/jquery-ui.js"></script>
<link href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" rel="stylesheet"/>

<script type="text/javascript">



$(function(){
    $('#mainAccordion').accordion({
        heightStyle: 'content',
        active: false,
        collapsible: true
    });
});
  
  
  $(function(){
      $("#updateAccordion").click(function() {
      var new_array = ['new_item1', 'new_item2'];
      $("#mainAccordion").empty();
      var accordion_data = '';
      for (var i = 0; i < new_array.length; i++) {
         accordion_data += '<h3><a href="#">' + new_array[i] + '</a></h3><div class="accordion"><p>this is some text</p></div>';
      }
      var option = {
       heightStyle: 'content',
       active: false,
       collapsible: true
      };

      $("#mainAccordion").append(accordion_data);
      $("#mainAccordion").accordion('destroy').accordion(option);
      
    });
  });
    



</script>
<button id="updateAccordion">Apply</button>
<div id="mainAccordion" class="accordion">
    
	<h3><a href="#">Section 1</a></h3>

    <div>
        <p>Section 1 Content</p>
    </div>
    
	<h3><a href="#">Section 2</a></h3>
	<div>
        <p>Section 2 Content
    </div>
    
	<h3><a href="#">Section 3</a></h3>
	<div>
        <p>Section 3 Content</p>
    </div>
    
	<h3><a href="#">Section 4</a></h3>
	<div>
        <p>Section 4 Content</p>
    </div>
</div>

关于javascript - 无法在 jQuery 中刷新 Accordion ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45272578/

相关文章:

jquery-ui - jQuery Sortable with box-sizing :border-box

php - 使用 javascript/php 进行简单的数据加密

javascript - 检查字符串中的字符是否都是唯一的

javascript - 打印模态内容后,关闭模态按钮不起作用

javascript - 滚动时, Logo 颜色发生变化,但向上滚动时它保持不变

javascript - Angular Sortable 事件的工作方式与使用 JQuery 不同

javascript - 使用javascript获取两个字符串之间的字符串

dom - 使用 JQuery event.target 与 child 一起工作

javascript - 滚动到一个链接并激活它

jquery - Gridster 通过拖入 div 来删除小部件