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

时间:2014-03-25 21:05:35

标签: javascript jquery

我正在尝试将事件处理程序附加到动态更改表中的每一行但没有成功(使用jQuery版本1.11.0) *编辑:正如许多人所指出的那样,“悬停”已被删除,但我的问题也存在于其他处理程序中*

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

上面的代码与jQuery文档 - http://api.jquery.com/on/非常相似,我尝试了其他变体,比如

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

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

2 个答案:

答案 0 :(得分:6)

不再支持将'hover'作为字符串传递给.on()(在"附加说明" .on() documentation中提及的v1.9中删除)。相当于使用'mouseenter mouseleave'代替,或者如果您只是想在鼠标进入相关元素时执行某些操作,请尝试:

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

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

标识'tableBody'听起来像是分配给<tbody>元素,当您的选择器还包含tbody作为{{1}的子元素时,这是没有意义的}}

答案 1 :(得分:1)

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

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

这是jsfiddle