2014-06-23 52 views
1

我創建了一個網頁,使用AJAX請求填充div的內容。沒有從AJAX結果處理HTML的jQuery事件

我使用

$('#div_id').html(data); 

填充div和這工作得很好。

但是,所有返回的內容都失去了它的JQuery,沒有更多的onclick事件和沒有JQueryUI小部件。

我已經打過電話了所有這些

$('#div_id').trigger('create'); 
$('#div_id').html(data).trigger('create'); 
$('body').trigger('create'); 

和所有與「pagecreate」,而不是創建相同的。

這一切都沒有工作,雖然我發現,所有我發現谷歌搜索與JQuery Mobile有關,所以我可以完全吠叫錯誤的樹。

感謝

+1

您需要使用[事件委託](http://learn.jquery.com/events/event-delegation/)。 –

+2

由於元素在DOM加載後被追加,因此需要使用委託事件處理函數:'$(document).on('create','#div_id',fn);' –

回答

0

你需要,當你添加新的元素,以這樣的DOM使用事件委託。

很難給出一個確切的答案沒有看到的HTML,而是說你有一個按鈕,你與上單擊處理增加......你會處理程序連接到#div_id,而不是像這樣:

$('#div_id').on('click', 'button', function() { 
    //do your thing... 
}); 

on方法中的第二個參數是將分派事件的元素。你可以把它想象成一個「if」語句。處理程序被附加到祖先元素,當事件冒泡時,事件被觸發。當它被觸發時,第二個參數被檢查。它說「做了」按鈕「派發此事件?」,如果答案是「是」,則函數回調將運行。