2012-04-23 60 views
0

我不敢相信我在問這個問題,但是找不到明確的答案。我的UL從其中的兩個項目開始,並通過AJAX呼叫進一步填充。我只是想將返回的項目添加到UL中,並且讓它們像可以點擊的項目一樣。當然有一種簡單的方法可以將附加列表項「綁定」到現有的UL上?

我見過BIND涉及十幾個不同的複雜的,費解的答案,LIVE,委託地圖 - 有關爲什麼不應該使用的其他人士討論所有。雖然這些缺點都有價值(我敢肯定),但他們似乎都沒有給出明確的答案,就像(看似)這樣簡單。當然有一種直接的方法來追加一個LI,並讓它使用爲列表定義的.click()事件。

$.each(api, function(i,item) { 
    var listItem = "<li meeting_id='" + item.meeting_id + "'>" + item.meeting_name + "</li>"; 
    $("#MeetingList").append(listItem); 
    /*Do Something here to bind the newly appended LI to the existing click event */ 
} 
+0

你可以告訴你綁定點擊的方式前兩個元素? – 2012-04-23 18:23:08

回答

1

您需要使用delegate(棄用,取而代之的jQuery的on 1.7+)有按處理程序添加到後,即使處理程序綁定的DOM元素功能。您發佈的用於添加元素的代碼很好。需要更改的代碼位於綁定您的點擊處理程序的位置。取而代之的

$('ul li').click(function() { ... }); 

你需要使用

$('ul').delegate('li', 'click', function() { ... }); 

,或者在jQuery的1.7+,

$('ul').on('click', 'li', function() { ... }); 
+0

'.live()'不推薦使用..'。對()' – 2012-04-23 18:22:35

+0

@ GabyakaG.Petrioli'on'只存在於jQuery的1.7,沒有什麼,指出OP的問題是使用1.7 – mattytommo 2012-04-23 18:23:32

+0

@mattytommo,仍'live'被'.delegate取代()'爲1.4.2所以還是不應該被用來.. – 2012-04-23 18:26:23

相關問題