我正在寫一個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');