防止同一函数的实例,如果加载一次jquery

Preventing instance of same function if loaded once jquery

本文关键字:加载 一次 如果 jquery 函数 实例      更新时间:2023-09-26

我的网站导航需要转换为垂直导航,所以我测量视口的宽度,并将其与resizeload功能绑定。然后执行menuConvert()函数。但是在调整窗口大小时,会导致多次执行menuConvert()函数。

我的js代码是

$(window).bind('load resize', function(){
  width = $(window).width();
  console.log(width)
  if(width < 800){
     menuConverter(); // This is the function
  }
});

如果函数被执行,我想阻止它的执行。

您可以取消绑定事件

$(window).bind('load resize', function(){
  width = $(window).width();
  console.log(width)
  if(width < 800){
     menuConverter(); // This is the function
     //Unbind
     $(window).unbind('load resize')
  }
});

我建议使用.on().off()分别代替.bind().unbind()

你可以这样做

var flag800;
$(window).bind('load resize', function () {
    if (width < 800) {
        if (flag800 !== true) {
            menuConverter(); // This is the function
            flag800 = true;
        }
    } else {
        flag800 = false;
    }
});

演示:小提琴

使用简单的bool变量。

var menexe = false;
$(window).bind('load resize', function(){
      width = $(window).width();
      console.log(width)
      if(width < 800){
            if(menexe === false){
         menuConverter(); // This is the function
         menexe = true;
         }
      }
    });