【发布时间】:2011-12-21 12:54:28
【问题描述】:
我正在创建一个信息仪表板来显示 Web 应用程序的各种操作的结果。
我想在表格中显示数据,按选项卡组织,即每个选项卡都是不同的类别和对应的表格。问题是这些选项卡和表格需要根据 ajax 响应动态创建。
现在我的 html 中的选项卡有这个骨架:
<div id="tabs">
<ul></ul>
</div>
从我的 ajax 请求中,我以 JSON 格式获取所有类别和所有数据,并在 javascript 中:
function(data){
//making the tab links and content divs
$.each(data.cat, function(){
$('#tabs ul').append('<li><a href="#'+this.id+'">'+this.name+'</a></li>');
$('#tabs').append('<div id="'+this.id+'"></div>');
}
//making the tab content
//cycle through all results, adding each to the table in div of its category
$.each(data.results function(){
var selector = '#' + this.catid + ' table tbody';
$(selector).append('<tr><td>'+this.something+'</td><td>'+
this.somethingelse + '</td></tr>');
}
$( "#tabs" ).tabs();
}
现在正在“工作”。它适当地将数据放入正在创建的正确 div 中,但是当我调用 tabs() 时的样式没有发生,所以我只有在彼此下方的 div。我知道问题所在——这些 div 对 DOM 来说是新的,而 jquery 没有看到它们,但我不知道如何解决它!
【问题讨论】:
-
jQuery 在您调用 .tabs() 时看到修改后的 DOM,如果在调用 ajax 之前调用了选项卡,那么使用 .tabs('add'...) 是要使用的正确方法(请参阅下面的答案)。附带说明一下,您的代码中有一些 Javascript 错误,但它确实有效:jsfiddle.net/highwayoflife/AcV3H
标签: javascript jquery ajax jquery-ui tabs