Javascript 如果jquery加载一次,则阻止相同函数的实例

Javascript 如果jquery加载一次,则阻止相同函数的实例,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我的网站导航需要转换为垂直导航,因此我测量视口的宽度,并使用resize和load函数将其绑定。然后它执行menuConvert()函数。但在调整窗口大小时,它会导致多次执行menuConvert()函数 我的js代码是 $(窗口).bind('load resize',function(){ 宽度=$(窗口).width(); 控制台日志(宽度) 如果(宽度

我的网站导航需要转换为垂直导航,因此我测量视口的宽度,并使用
resize
load
函数将其绑定。然后它执行
menuConvert()
函数。但在调整窗口大小时,它会导致多次执行
menuConvert()
函数

我的js代码是
$(窗口).bind('load resize',function(){
宽度=$(窗口).width();
控制台日志(宽度)
如果(宽度<800){
menuConverter();//这是函数
}
});
如果函数一次执行,我想阻止它的执行。有人能帮我解除绑定事件吗

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

     //Unbind
     $(window).unbind('load resize')
  }
});
$(窗口).bind('load resize',function(){
宽度=$(窗口).width();
控制台日志(宽度)
如果(宽度<800){
menuConverter();//这是函数
//解开
$(窗口)。取消绑定('加载调整大小')
}
});
我建议分别使用和替换
.bind()
.unbind()

您可以解除事件绑定

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

     //Unbind
     $(window).unbind('load resize')
  }
});
$(窗口).bind('load resize',function(){
宽度=$(窗口).width();
控制台日志(宽度)
如果(宽度<800){
menuConverter();//这是函数
//解开
$(窗口)。取消绑定('加载调整大小')
}
});

我建议分别使用和替换
.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;
    }
});
var-flag800;
$(窗口).bind('load resize',函数(){
如果(宽度<800){
如果(flag800!==真){
menuConverter();//这是函数
flag800=真;
}
}否则{
flag800=假;
}
});

演示:

您可以执行以下操作

var flag800;
$(window).bind('load resize', function () {
    if (width < 800) {
        if (flag800 !== true) {
            menuConverter(); // This is the function
            flag800 = true;
        }
    } else {
        flag800 = false;
    }
});
var-flag800;
$(窗口).bind('load resize',函数(){
如果(宽度<800){
如果(flag800!==真){
menuConverter();//这是函数
flag800=真;
}
}否则{
flag800=假;
}
});

演示:

使用一个简单的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;
         }
      }
    });
var menexe=false;
$(窗口).bind('load resize',function(){
宽度=$(窗口).width();
控制台日志(宽度)
如果(宽度<800){
如果(menexe==false){
menuConverter();//这是函数
menexe=true;
}
}
});

使用一个简单的布尔变量

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;
         }
      }
    });
var menexe=false;
$(窗口).bind('load resize',function(){
宽度=$(窗口).width();
控制台日志(宽度)
如果(宽度<800){
如果(menexe==false){
menuConverter();//这是函数
menexe=true;
}
}
});

如果将宽度扩展到800以上,然后返回到较小的窗口,则此操作无效。如果要转换/取消转换,则会出现问题。但是,现在没有uncert函数,所以这可能不是问题?@Satpal这很好,但是如果我将窗口调整到以前的大屏幕?它不像以前那样before@SumaiyaSalam,menuConverter()到底做了什么?@Satpal它实际上将水平菜单变成了垂直菜单,并添加了一些标记。只不过that@SumaiyaSalam,那么重新执行
menuConverter()
将解决问题吗?右侧如果将宽度扩展到800以上,然后返回到较小的窗口,则此操作将不起作用。如果要转换/取消转换,则会出现问题。但是,现在没有uncert函数,所以这可能不是问题?@Satpal这很好,但是如果我将窗口调整到以前的大屏幕?它不像以前那样before@SumaiyaSalam,menuConverter()到底做了什么?@Satpal它实际上将水平菜单变成了垂直菜单,并添加了一些标记。只不过that@SumaiyaSalam,那么重新执行
menuConverter()
将解决问题吗?好的,这很好,但是如果我将窗口调整到上一个大屏幕?它不像以前那样before@SumaiyaSalam请参阅-如果您想在每次切换发生时运行
menuConverter
,这很好,但是如果我将窗口调整为上一个大屏幕,是否可以?它不像以前那样before@SumaiyaSalam请参阅-如果您想在每次切换发生时运行
menuConverter
,这很好,但是如果我将窗口调整为上一个大屏幕,是否可以?它不再像以前那样,您需要添加另一个即使每次调整大小时都会触发的窗口,并再次使menexe=false。这很好,但如果我将窗口调整为以前的大屏幕,您会这样做吗?它不再像以前那样,您需要添加另一个,即使每次调整大小时都会触发,并再次使menexe=false。