jQuery 在页面加载后添加的元素上触发

jQuery trigger on element that is added after page load

我有一个 jQuery ajax 表格。完成后,它更改了元素的 ID,如下所示:

jQuery('#ready').attr('id','done');

然后,我想做一个针对 #donemouseover() 函数。问题是它不起作用,因为 #done 没有在页面加载时加载。

这个问题的正常解决方法是什么?

您需要使用这种方法:

$( document ).on( 'mouseover', '#done', function() {
   //...
});

在这种情况下,您的函数处理程序将附加到 document 并在 mouseover 上它将搜索要触发的 #done 元素。

为此你需要使用事件-delegation:

$(document).on('mouseover', '#done', function(){
    //do something
});

#done 上的鼠标悬停事件侦听器被注册后 DOM ,您正在向 DOM 添加内容 。因此,在您将事件绑定到它时,该元素不存在。

通过事件委托,您可以将事件监听器绑定到现有的父级(在本例中为document)。这将监听其后代与 #done - 选择器匹配的所有事件。