javascript - jquery停止双重事件

标签 javascript jquery

我遇到一个问题,无法防止双重事件

所以首先我有一段触发的代码

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;
}

这显然执行了幻灯片功能。这是有 .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()方法期望选择器 match the one originally passed to .on() when attaching event handlers .

在初始事件绑定(bind)中,您将事件附加到 window元素为 jQuery(window).on(...) 。但在处理程序函数中,您要删除事件,然后将其重新附加到 .pageSize元素为 jQuery('.pageSize').off(...)jQuery('.pageSize').on(...) .

换句话说,您实际上并没有删除绑定(bind)到 window 的事件处理程序。元素,以便用户可以继续滑动。

为什么 event.handled在您的示例中不起作用

每次发生滑动事件时,单独 event创建对象并将其传递给处理程序。所以event object 不是全局变量,您可以在后续滑动中修改并检查其状态。

按照您的示例可能的解决方案

  1. 匹配传递给 on() 的选择器和off()方法。
  2. 设置和取消设置全局变量以指示滑动正在进行。

关于javascript - jquery停止双重事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15014050/

相关文章:

javascript - 从子域访问根域的 localStorage

javascript - 获取图像 src 如果有多个则获取图像 src 只获取一张图像 src

javascript - Progressbar.js 动画在 IE 中呈现不稳定

javascript - JQuery 代码可以在 chrome 和 IE 中运行,但不能在 firefox 中运行

曾经工作的 jquery 脚本不适用于 jquery 1.4.2

javascript - 如何使用jquery增加div的不透明度?

php - jquery 到 php 翻译器?

javascript - 'use strict' 和 underscore.js 问题

javascript - Angular 6 promise

javascript - 如何管理使用 src 调用脚本的 GET 参数?