2013-04-17 91 views
1

我無法將jQuery事件綁定到動態創建的列表項。動態創建的內容不綁定jQuery事件

這是btnRemoveItem上的事件,在jQuery開始添加後沒有觸發。

$('#btnAddStore').on('click', function(){ 
    (...) 
    $.ajax({ 
    success: (function(result) { 
     (...) 
     var li = jQuery('<li/>', { 
      'id': object['id'] 
     }).append('<span title="Remove item from list" class="btnRemoveItem"></span>') 
      .append('<span class="text">' + name_adr[0] + '</span>') 
      .append('<span class="address">' + name_adr[1] + '</span>'); 

     $(li).appendTo('#'+ country + ' ul'); 
    } 
    }); 
}); 

我已經看過類似的問題在這裏,但我還沒有找到任何解決我的問題的答案。我從這段代碼中遺漏了什麼?

+0

的可能重複的[通過動態地生成的元素觸發的事件不被事件處理程序捕獲](http://stackoverflow.com/questions/12829963/events-triggered-by-dynamically-generated-element-沒有被事件手捕獲) –

回答

9

使用.on()這樣

$(document).on('click','#btnAddStore', function(){...}); 
+0

感謝您的提示。它不能在'Add Store'函數中使用這個函數,但在'Remove store'函數中執行相同的操作可以解決我的問題。這是否意味着當使用'.on()'事件時,我總是應該使用這個方法? – Steven

+1

如果你的元素是動態添加的,你應該使用'.on()'這種方式。 –

1

使用代表團。對():

$(document).on('click', '#btnAddStore', function(){...}); 
2

試試這個

$(document).on('click','#btnAddStore', function(){...}); 

$('#btnAddStore').on("scroll", ....)結合的滾動事件僅是這些元素在執行本聲明時出現,即是否有任何帶有分類的新元素在執行這個語句之後,動態添加的包裝器1將不會爲這些元素執行事件處理程序。

$(document).on("scroll","#btnAddStore", ...)另一方面將向文檔對象註冊一個事件處理程序,並且每當滾動發生在具有類'wrapper`的元素內時,都將利用事件冒泡來調用處理程序,因此它將支持動態添加元素。

See here