我使用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/