2014-10-04 226 views
2

面對jQuery不允許選擇附加元素的問題。 我見過很多建議如何解決它。 例如:jquery選擇附加元素

var $li = $('<li><span>' + html + '</span></li>'); 
$('.top').append($li); 

但它不能幫助我的方式。 我從服務器列表中獲取json格式數據庫中的記錄,並在我的視圖中查看,然後循環該列表並生成一些html結構。

例如:

$.getJSON("/searchbytype", data, function(data) { 
    $.each(data, function(key, val) { 
     $('items').append('<li class="item">'+ val.name + '</li>'); 
    }); 
}); 

而我想下一步要做的就是點擊一些li項目,並做一些操作。 Ul列表中可能會包含100-200 li標籤。任何想法,將不勝感激!

+0

,哪一部分是不工作? – sdespont 2014-10-04 13:52:53

+0

[活動委託](http://learn.jquery.com/events/event-delegation/) – 2014-10-04 13:53:57

+0

我應該在回答之前查找重複。很確定至少會有一個。 – melancia 2014-10-04 14:00:39

回答

2

我認爲你需要的事件,代表團

$('body').on('click', 'li', function(){ 
    // this handler will work even for dynamically created <li> 
}); 
+0

太簡單了,謝謝!但它開始工作,當我重新安排li並點擊:$('body')。on('click','li',function(){ – user3673623 2014-10-04 14:04:20

+0

@ user3673623啊!是的,交換了兩者。 – 2014-10-04 14:06:02

1

你可以這樣說:

$.getJSON("/searchbytype", data, function (data) { 
    $.each(data, function (key, val) { 
     $('<li>', { 
      class: 'item' 
     }).html(val.name).on('click', function() { 
      // Your code here. 
     }).appendTo('.items'); 
    }); 
}); 

注:我假設該容器是class元素等於items,所以我添加了一個失蹤.jQuery它的前綴選擇。