2013-03-22 125 views
1

在试图用jquery创建一个动态手风琴时,我找不到为什么各个元素都没有折叠。它们只是作为文本出现,而不是承担手风琴效应。任何人都能发现我的错误吗(假设数据变量都包含数据)动态Jquery移动手风琴

编辑:我只是尝试在Firefox,而不是镀铬为了好奇和手风琴行为works..I不明白这一点

var outdiv = $('<div data-role="collapsible-set"></div>'); 

for(var i=0; i<data.length; i++){ 

    var innerdiv = $('<div data-role="collapsible" data-collapsed="true" ></div>'); 
    innerdiv.append('<h3>' + 'Tweet #' + i + '</h3>'); 
    innerdiv.append('<p>' + data[i].text + '</p>'); 

    outdiv.append(innerdiv); 

    outdiv.appendTo('#output'); 


} 

回答

3

您需要在collapsibleset()方法调用您outdiv

$('#output [data-role=collapsible-set]').collapsibleset(); 

工作jsFiddle这里

+0

很好的答案!你能否简要解释为什么需要而不是触发器? – Sam 2013-03-22 03:15:32

+0

他们都在jqm 1.2和1.3工作。 'collapsibleset()'直接调用窗口小部件的初始化方法,'trigger('create')'触发'create'事件,但是你需要在父元素上使用它**,当你需要增强一个以上小部件一次。 – peterm 2013-03-22 03:42:51

0

我不是jQuery手机用户,但是在我看来,您需要为您的添加内容设置行为,例如循环后的$('#output').trigger('create')

它的讨论更here

0

我不知道,如果你可以选择整个元素这样或没有,但你也可以使用jQuery的Attribute Contains Selector

//So your outdiv would become 
var outdiv = $('div[data-role*="collapsible-set"]'); 

//And then innerdiv, something like 
var innerdiv = $('div[data-role*="collapsible"][data-collapsed*="true"]'); 
0

你的代码更改为:

outdiv.append(innerdiv).collapsibleset("refresh"); 

您必须下载jQuery Mobile的版本1.3.2