Jquery单击ajax导入的数据

Jquery单击ajax导入的数据,jquery,ajax,Jquery,Ajax,我调用AJAX并将数据导入html。 现在我想在单击某个div时发出警报 在过去,我总是在AJAX调用之后对元素使用.on()。 这次它不工作,但AjaxComplete正在工作 对此有什么解释吗 不工作: $( ".morec" ).on("click",function() { alert('test'); }); 工作: $( ".morec" ).on("click",function() { alert('test'); }); $(document).ajaxComplete(f

我调用AJAX并将数据导入html。 现在我想在单击某个div时发出警报

在过去,我总是在AJAX调用之后对元素使用.on()。 这次它不工作,但AjaxComplete正在工作

对此有什么解释吗

不工作:

$( ".morec" ).on("click",function() {
alert('test');
});
工作:

$( ".morec" ).on("click",function() {
alert('test');
});
$(document).ajaxComplete(function(){
$( ".morec" ).click(function() {
alert('test');
});
});
试一试

编辑

在页面加载时,DOM中可能不存在类为.morec的元素。因此,如果使用方法将事件处理程序附加到该对象,则在动态生成元素时,它将不起作用。相反,您应该将事件委托给父元素或文档,以便在元素添加到DOM时触发事件

您可以在

事件委派允许我们将单个事件侦听器附加到 父元素,该元素将为匹配 选择器,无论这些子体现在存在还是添加到 未来


它们是相同的,但其中一个在ajax调用完成时触发的事件处理程序中。如果要委派事件,必须使用
on()
u是否使用jquery<1.7???可能重复,是的,但通常是经典的$(“.morec”)。on(“单击”,函数(){works.为什么不现在我想知道?@RDBWSF事件处理程序初始化时,DOM结构中不存在内容。换句话说,在初始化时,
$('.morec')。length==0
…您能解释一下为什么这段代码回答了这个问题吗?代码只回答了问题,因为它们不教授解决方案。