我需要跟踪页面上所有元素的mouseenter / mouseleave事件。
直观的代码是:
$(window).on('mouseenter mouseleave', function(e) {
console.log(e.target, e.type);
// ...
});
但是每当mouseenter元素发生时,它就会触发mouseleave事件,从而消除了mouseenter / mouseleave的所有好处,即它像mouseover / mouseout一样工作。
有没有办法处理这个问题而不直接将处理程序附加到所有元素?
这看起来像一个jQuery错误吗?因为根据我的知识和jQuery文档我已经阅读过,看起来上面的代码应该可以正常工作。
使用JSBin:http://jsbin.com/axuluc/2/
修改:按预期方式运作:http://jsbin.com/axuluc/9/
答案 0 :(得分:1)
好的子元素包含在所有定义中,不是吗?
尽可能为所需的元素提供类class="mouse_active"
或使用适当的选择器。
则...
$(window).on('mouseenter mouseleave','.mouse_active', function(e) {
console.log(e.target, e.type);
// ...
});
并且您仍然附加一个处理程序
答案 1 :(得分:0)
这是正确的方法:
$(window).hover(
function(){
// mouse enter function...
},
function(){
// mouse leave function...
}
);