Javascript if语句内的函数也在if语句外运行
可能重复:Javascript if语句内的函数也在if语句外运行,javascript,jquery,html,Javascript,Jquery,Html,可能重复: 我已经试着让这个工作了几个小时,但无法找到解决方案,所以一些建议将不胜感激!我在if($window.width()1000 px时,该函数也会启动。。我的问题很简单。。为什么? 我正在用背景色“记录”if/else语句,背景色很好,调整大小时颜色会来回变化。。当页面1000时,右侧列表应可视为选项卡 (更容易滚动)第一次在大于1000px的窗口中打开页面时,它会设置单击事件处理程序。当您将其调整为小于1000px的宽度时,仍然会设置单击事件,因此当您单击时,它仍会作出反应 您可
我已经试着让这个工作了几个小时,但无法找到解决方案,所以一些建议将不胜感激!我在
if($window.width()<1000)
语句中有一个函数,它也在该语句之外运行。。因此,当窗口宽度>1000 px时,该函数也会启动。。我的问题很简单。。为什么?
我正在用背景色“记录”if/else语句,背景色很好,调整大小时颜色会来回变化。。当页面<1000px时,右侧列表应可视为带有选项卡功能的下拉列表(与电梯上的下拉列表功能相同),当页面>1000时,右侧列表应可视为选项卡
(更容易滚动)第一次在大于1000px的窗口中打开页面时,它会设置单击事件处理程序。当您将其调整为小于1000px的宽度时,仍然会设置单击事件,因此当您单击时,它仍会作出反应 您可以执行以下操作: 当宽度大于1000px时
$('.schedule li').bind('click', function(){...
否则(宽度小于1000px)取消绑定单击
$('.schedule li').unbind('click');
我希望这是有帮助的。您的JSFIDLE对我有用。每当
if
语句为true时,您都会将新的事件处理程序绑定到元素,但永远不会删除它们。也就是说,一旦$window.width()<1000
为真,处理程序将绑定到元素,直到重新加载页面。如前所述,更糟糕的是,只要条件为真,就会添加新的事件处理程序,这会导致(基本上)多次执行相同的函数。解决方案:不要在checkWidth
函数中绑定事件处理程序,也不要在每次调用时删除它们。@bfavaretto单击选项卡,调整大小至<1000px,单击成为下拉菜单的选项卡,然后再次调整大小至>1000px。。好吧,Felix Kling找到了原因。谢谢Felix King,我明白你的意思了,我将尝试用您刚才给我的信息找到一个解决方案,对jquery/javascript还是很陌生的..嗨,迈克,谢谢您的回答,有助于我进一步了解。你交换了价值观还是我错了?这意味着绑定处理程序应该放在if(windowsize<1000)中,而unbind in>1000。我更新了fiddle(),但仍然无法使其工作..您好,用户1901096,是的,我切换了值。很抱歉哪部分不起作用?