Javascript jquery停止双事件
我遇到了一个问题,在这个问题上 首先,我有一段代码可以触发Javascript jquery停止双事件,javascript,jquery,Javascript,Jquery,我遇到了一个问题,在这个问题上 首先,我有一段代码可以触发 jQuery(window).trigger('swipeForward'); 所以它监听这个触发器 jQuery(window).on('swipeForward', swipeHandlerNext ); 滑动处理程序的思想是,用户不能滑动两次并创建一个双重事件 然后执行swipeHandlerNext函数 function swipeHandlerNext(event) { // If event isn't alr
jQuery(window).trigger('swipeForward');
所以它监听这个触发器
jQuery(window).on('swipeForward', swipeHandlerNext );
滑动处理程序的思想是,用户不能滑动两次并创建一个双重事件
然后执行swipeHandlerNext函数
function swipeHandlerNext(event) {
// If event isn't already marked as handled, handle it
if(event.handled !== true) {
// Kill event handler, preventing any more clicks
jQuery(".pageSize").off("swipeForward");
// Do your stuff here
pageSize = jQuery(".mainHeader").width();
slide("forward", pageSize);
console.log(" swipe complete page forward via swipe");
// Mark event as handled
event.handled = true;
}
return false;
}
这显然执行了slide函数。这是一个有.animate命令的
function slide(data, pageSize) {
if (!pageSize) {
pageSize = jQuery(".mainHeader").width();
}
var promise = calcLeft(data, pageSize);
jQuery.when(promise).then(function(result) {
console.log(result);
jQuery('#pageHolder').delay(500).animate({
left: result
}, 400, function() {
console.log("animation started");
calcNav(pageSize);
calcPage(pageSize);
jQuery(".pageSize").on("swipeForward", swipeHandlerNext);
console.log("animation complete");
});
});
}
然而,这并不能阻止双重滑动
感谢您的帮助为什么Off()
在您的示例中不起作用
jQuery的off()
在初始事件绑定中,您使用jQuery(window).on(…)
将事件附加到window
元素。但是在处理程序函数中,您将删除事件,然后使用jQuery('.pageSize').off(…)
和jQuery('.pageSize').on(…)将事件重新附加到.pageSize
元素
换句话说,您实际上并没有删除绑定到窗口
元素的事件处理程序,因此用户可以继续滑动
为什么事件处理
在您的示例中不起作用
每次刷卡事件发生时,都会创建一个单独的事件
对象并将其传递给处理程序。因此,事件
对象不是一个全局变量,您可以在随后的滑动中修改并检查其状态
遵循您的示例的可能解决方案
匹配传递给on()
和off()
方法的选择器
设置和取消设置全局变量,作为正在进行刷卡的指示
你好谢谢这个问题真的源于此。。有什么想法吗?我在拉扯我的头发out@Dan总的来说,这似乎是同一个问题。用当前问题中描述的问题的可能解决方案更新了我的答案。看看其中一个是否有用。嗨,我现在在所有的地方都使用window。是的,我在那里很胖。但有时它不起作用的原因很奇怪。这和我的刷卡密码有关吗?正如我对滑动事件和单击事件使用功能幻灯片一样。我真的不明白它有时是如何工作的,有时不是——特别是现在,随着事件的分类