Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery停止双事件_Javascript_Jquery - Fatal编程技术网

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。是的,我在那里很胖。但有时它不起作用的原因很奇怪。这和我的刷卡密码有关吗?正如我对滑动事件和单击事件使用功能幻灯片一样。我真的不明白它有时是如何工作的,有时不是——特别是现在,随着事件的分类