0

我熟悉下划线的_.defer功能。如何使用 jQuery 重新创建它?

我正在执行 ajax 调用,divs将该调用的响应附加到 DOM 中,但问题是,我需要在新创建的那些上设置事件侦听器divs,但我必须等到它们被渲染。我怎样才能做到这一点?

$.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." );
});
4

2 回答 2

2

您最好的选择可能是使用以下命令将事件委托给容器on

$('#items-container').on('click', '.item', function (e) {
    alert('Handler for .click() called');
});

注意:您只需要附加此事件处理程序一次,而不是在每个 AJAX 请求之后。(感谢@Kevin B

于 2013-10-24T15:58:23.197 回答
1

使用.on()

由于元素是动态添加的,因此您不能将事件直接绑定到它们。因此您必须使用事件委托

$("#items-container").on("click", ".item", function (e) {
    alert("Handler for .click() called");
});

句法

$( elements ).on( events, selector, data, handler )
于 2013-10-24T15:59:37.390 回答