jQuery .on()没有绑定事件处理程序

jQuery .on() not binding event-handler

本文关键字:绑定 事件处理 程序 on jQuery      更新时间:2023-09-26

我试图将事件处理程序附加到动态变化表中的每一行,没有成功(使用jQuery 1.11.0版本)*编辑:正如许多人指出的那样,'hover'被弃用了,但我的问题也存在于其他处理程序*

$('#tableBody tbody').on('hover', 'tr', function() {
    alert('hovering on a row');
});

上面的代码与jQuery文档(http://api.jquery.com/on/)非常相似,我还尝试了其他版本,比如

$(document).on('hover', '.tableRow', function(){...});

事件处理程序没有被添加。我应该注意到,表的内容是通过AJAX检索的,然后显示出来,这就是我使用.on()方法的原因。

不再支持将'hover'作为字符串传递给.on()(在v1.9中删除,如.on()文档中的"附加说明"中所述)。等效的是使用'mouseenter mouseleave',或者如果您只是想在鼠标进入有问题的元素时做一些事情,请尝试:

$('#tableBody tbody').on('mouseenter', 'tr', function() {

请注意,#tableBody元素需要在运行时存在,因此您需要将其包含在文档就绪处理程序中或正文末尾的脚本元素中。

id 'tableBody'听起来像是分配给<tbody>元素,当您的选择器还包括tbody作为#tableBody的子元素时,这没有意义。

'mouseenter'事件应该可以正常工作。

$('#myTable tbody').on('mouseenter', 'tr', function() {
    alert('hovering on a row');
});