我正在写一个jQuery插件,遇到了一个有趣的问题,我想将插件中的事件绑定到body上,并委托给一个特定的子元素。jQuery插件多个实例,绑定事件只有一次
这是没有问题的,但是该插件是为支持同一页面上的多个实例而构建的,这会导致该事件被触发插件在页面上存在的次数。 (已经被绑定了很多次)
除了附加在窗口上的布尔标志之外,还有没有只能绑定一次的插件代码?
我可以通过绑定外部插件代码来解决问题,所以它只绑定一次,或者通过确保定时器只设置一次,但我宁愿不让事件被触发20次。我期待更多的,如果有另一种方式..
可能的解决方案
if (!window.tip.hoverIntent || window.tip.hoverIntent === undefined) {
//bind handler..
window.tip.hoverIntent = true;
}
事件处理程序
$('body').on({
mouseenter: function() {
clearTimeout(window.tip.timerID);
},
mouseleave: function() {
window.tip.timerID = setTimeout(function() {
$('.tip-shown').remove();
}, 250);
}
}, '.tip-shown');