Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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 每次调整浏览器大小时,单击事件都会触发多次_Javascript_Onclick_Resize - Fatal编程技术网

Javascript 每次调整浏览器大小时,单击事件都会触发多次

Javascript 每次调整浏览器大小时,单击事件都会触发多次,javascript,onclick,resize,Javascript,Onclick,Resize,我有一个移动菜单,我目前正在构建它,我面临着一个关于('click')事件的问题。每当我尝试调整浏览器的大小时,事件会多次触发。最初加载脚本和事件可以正常工作,但当我开始调整浏览器大小时,事件会触发多次 下面是我正在编写的代码示例。是否有一种方法,它只在调整大小后触发一次。我尝试了一个临时解决办法,但似乎没有效果 (function($){ 'use strict'; var mobileMenu = { init : function() {

我有一个移动菜单,我目前正在构建它,我面临着一个关于('click')事件的问题。每当我尝试调整浏览器的大小时,
事件会多次触发。最初加载脚本和事件可以正常工作,但当我开始调整浏览器大小时,事件会触发多次

下面是我正在编写的代码示例。是否有一种方法,它只在调整大小后触发一次。我尝试了一个临时解决办法,但似乎没有效果

(function($){
    'use strict';

    var mobileMenu = {

        init : function() {


            $('.region-primary-menu').addClass('primary-mobile-menu');

            $('.primary-mobile-menu .menu.-primary > .menu-item').addClass('mobile-menu-item');

            $('.primary-mobile-menu .menu.-primary > .mobile-menu-item').on('click', function() {
                $(this).toggleClass('active');

                console.log('click');
            })
        },

        clear : function() {
            $('.primary-mobile-menu, .mobile-menu-item').removeClass('primary-mobile-menu mobile-menu-item');
        }
    }

    $(document).ready(function() {


        if ($(window).width() < 1180) {
            mobileMenu.init();
        }

        else {
            mobileMenu.clear();
        }
    });



    $(window).on('resize', function(e) {

        var resizeTimer;

        clearTimeout(resizeTimer);
        var resizeTimer = setTimeout(function() {
            if ($(window).width() < 1180) {
                mobileMenu.init();
            }

            else {
                mobileMenu.clear();
            }
        }, 100)
    });



})(jQuery)
(函数($){
"严格使用",;
var mobileMenu={
init:function(){
$('region primary menu').addClass('primary-mobile-menu');
$('.primary-mobile-menu.menu.-primary>.menu-item').addClass('mobile-menu-item');
$('.primary mobile menu.menu.-primary>.mobile menu item')。打开('单击',函数()){
$(this.toggleClass('active');
console.log('click');
})
},
清除:函数(){
$('.primary-mobile-menu,.mobile-menu-item').removeClass('primary-mobile-menu-mobile-menu-item');
}
}
$(文档).ready(函数(){
如果($(窗口).width()<1180){
mobileMenu.init();
}
否则{
mobileMenu.clear();
}
});
$(窗口).on('resize',函数(e){
var树脂定时器;
clearTimeout(resizeTimer);
var resizeTimer=setTimeout(函数(){
如果($(窗口).width()<1180){
mobileMenu.init();
}
否则{
mobileMenu.clear();
}
}, 100)
});
})(jQuery)

这是因为
点击
事件被附加在
mobileMenu.init()中函数。调整大小时,将附加一个新的
单击
事件。你可以用

因为在您的
$(窗口)。在('resize',函数(e)…
中,您可以执行以下操作:

 if ($(window).width() < 1180) {
    mobileMenu.init();
 }
无论如何,另一个答案告诉您如何删除事件侦听器,这是您应该做的来修复它。

可能重复的
 if ($(window).width() < 1180) {
    mobileMenu.init();
 }
 $('.primary-mobile-menu .menu.-primary > .mobile-menu-item').on('click' ...