我需要跟踪页面上所有元素的 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/