我熟悉Underscore的_.defer
功能。如何使用jQuery重新创建它?
我正在执行ajax调用,将该调用的响应中的divs
附加到DOM中,但问题是,我需要在新创建的divs
上设置set事件侦听器,但是我必须等到它们被渲染。我怎么能这样做?
$.getJSON( mAPI, function( m ) {
$(m.items).each(function(item) {
$('#items-container').append('<div class="item">' + item + '</div>');
});
}):
$( ".item" ).click(function(e) {
alert( "Handler for .click() called." );
});
答案 0 :(得分:2)
您最好的选择可能是使用on
将事件委托给容器:
$('#items-container').on('click', '.item', function (e) {
alert('Handler for .click() called');
});
注意:您只需要在每次AJAX请求之后附加一次此事件处理程序。 (谢谢@Kevin B)
答案 1 :(得分:1)
使用.on()
由于元素是动态添加的,因此无法将事件直接绑定到它们。因此,您必须使用Event Delegation。
$("#items-container").on("click", ".item", function (e) {
alert("Handler for .click() called");
});
语法
$( elements ).on( events, selector, data, handler )