0

我正在开发一个完整的 AJAX 应用程序。当我加载一个新的 AJAX 元素时,我使用回调在其上设置处理程序。为了确保不要试图绑定一个不存在的元素,我将监听器放在某个父级上。例如我这样做:

$el.on( 'click',"#popin a.closePopin", function(e) { 
        e.preventDefault();
        closePopin(); 
});

这工作...... 80%的时间。

我的问题是,如果什么都没有被解雇,那另外 20% 呢?

谢谢。

编辑:阅读第一个答案和评论后,我想明确指出问题是在相同元素上随机发生而不更新代码。并且 $el 是一个永远不会改变或消失的固定容器,ajax 内容也必然是它的后代。

4

1 回答 1

1

为避免这种情况,您不应将委托事件附加到,$el从而仅使与选择器匹配的后代元素触发事件,而是将其附加到document.

$(document).on('click', "#popin a.closePopin", function(e) { 
    e.preventDefault();
    closePopin(); 
});
于 2013-09-11T19:32:30.097 回答