首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Accordion不适用于使用Ajax后创建的html

问Accordion不适用于使用Ajax后创建的html
EN

Stack Overflow用户
提问于 2013-06-10 09:18:15
回答 1查看 613关注 0票数 0

我似乎无法让accordion菜单应用于使用jquery附加的新html代码。更复杂的是,我使用ajax函数和for循环从mysql服务器提取数据。执行此操作时,我只能将折叠菜单应用于第一个标题。

代码语言:javascript
复制
$(document).ready(function(){
    $.ajax({                                      
      url: 'database/api.php', data: "", dataType: 'json',  success: function(rows)        
      {
        for (var i in rows)
        {
          var row = rows[i];          
          var code = row[0];
          var process = row[1];

          $('#accordion').append("<h3>"+code+"</h3><div><p>Process: "+process+"</p></div>");


        } 
      } 
    });
    $("#accordion").accordion({collapsible: true, active: false});
});
EN

回答 1

Stack Overflow用户

发布于 2013-06-10 10:27:42

除非指定,否则ajax请求将以异步方式完成。这意味着它将启动ajax请求并跳到下一条语句,即使它还没有结束。因此,您在追加数据之前初始化了accordion。在for循环之后,将accordion语句移至success。

此外,不要一直将html附加到DOM中。将其全部收集到一个变量中,然后执行一次。

代码语言:javascript
复制
$(document).ready(function(){
$.ajax({                                      
  url: 'database/api.php', data: "", dataType: 'json',  success: function(rows)        
  {
    var innerHtml = "";//variable to store what you want to add
    for (var i in rows)
    {
      var row = rows[i];          
      var code = row[0];
      var process = row[1];

      innerHtml += "<h3>"+code+"</h3><div><p>Process: "+process+"</p></div>";


    }

    $("#accordion").append(innerHtml).accordion({collapsible: true, active: false});
  } 
});

});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17015764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档