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