2013-03-22 126 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