Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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 if语句内的函数也在if语句外运行_Javascript_Jquery_Html - Fatal编程技术网

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,是的,我切换了值。很抱歉哪部分不起作用?