我使用hammer.js和jquery.hammer.js來處理多種不同類型的事件(主要是輕敲事件)。如何使用Hammer.js禁用然後重新啓用Hammer Event?
我做了一個包裝函數,用於任何/所有輕擊事件偵聽器聲明。 這是功能。
var OnClick = function(button, CallbackFunction, TurnBackOnAfterStartCallback)
{
if(TurnBackOnAfterStartCallback != false)
{
TurnBackOnAfterStartCallback = true;
}
if(!button)
{
LogResult("Error: Attempted to create Hammer Click Event Listener without assigning a jQuery Object to listen too...");
return;
}
if(!CallbackFunction)
{
LogResult("Error: Attempted to create Hammer Click Event Listener without assigning a Callback Function...");
return;
}
$(button).hammer().on("tap", function(event)
{
var target = event.target;
// Disable the button so that we can't spam the event....
$(target).hammer().off("tap");
// We receive the event Object, incase we need it...
// Then we call our CallBackFunction...
if(CallbackFunction)
{
CallbackFunction(target);
}
// Renable the button for future use if need be.
if(TurnBackOnAfterStartCallback)
{
$(target).hammer().on("tap", CallbackFunction);
}
});
};
當我使用此功能註冊事件時,它按預期工作。首先,它禁用事件監聽器,所以你無法通過點擊按鈕100次垃圾郵件的事件......像這樣......
$(target).hammer().off("tap");
然後瓶坯任何回調功能,如果存在任何...
if(CallbackFunction)
{
CallbackFunction(target);
}
最後,我們重新啓用以供將來使用按鈕,除非我們指定它不會被重新開啓...
// Renable the button for future use if need be.
if(TurnBackOnAfterStartCallback)
{
$(target).hammer().on("tap", CallbackFunction);
}
第一事件期間推出這工作完全...然而,一旦我再次觸發事件回調函數發送的事件,而不是event.target出於某種原因...
如果我刪除.off和.on調用,然後它按預期方式工作,但可以垃圾郵件..
對於一個現場示例結帳此jsfiddle ...它將結果打印到控制檯...第一個輸出是正確的,之後的一切都不像預期的那樣。 https://jsfiddle.net/xupd7nL1/12/