2013-11-24 69 views
0

我有这个脚本,使div成为一个链接时调整窗口大小。问题是,当我缩小div仍然重定向。Div仍然重新调整窗口大小后重定向

代码:

$(window).resize(function() {   
    if ($(this).width() <= 1400) { 

     $("#settings").click(function() { 
      window.location = "settings.php"; 
     }); 
    } else { 
     $("#settings").click(function() { 
      $("#settingsDropdown").toggle(); 
     }); 
    } 
}).triggerHandler('resize'); 

我尝试添加window.location = "#";,但没有奏效。

回答

1

这两起事件被注册,你需要删除的第一个事件处理程序单击检查关闭事件

你可以这样做:

$(window).resize(function() {   
    if ($(this).width() <= 1400) { 
     $("#settings").off('click'); // <------ Add this line 
     $("#settings").click(function() { 
      window.location = "settings.php"; 
     }); 
    } else { 
     $("#settings").off('click'); // <------ Add this line 
     $("#settings").click(function() { 
      $("#settingsDropdown").toggle(); 
     }); 
    } 
}).triggerHandler('resize'); 
+0

工作!非常感谢您的帮助! – Jacob

+0

欢迎,不要忘了接受答案,如果它帮助你:) –

+0

更好地简单地改变clcik处理程序并完全跳过'resize'处理程序。在手动调整大小时,resize会触发很多次... clcik处理程序可以设置一次 – charlietfl

0

你必须unbind事件处理程序,你不想再 见unbind

0

使用绑定和取消绑定

$(window).resize(function() {   
    $("#settings").unbind('click.redirectOrToggle'); 
    if ($(this).width() <= 1400) { 
    $("#settings").bind('click.redirectOrToggle', function() { 
     window.location = "settings.php"; 
    }); 
    } else { 
    $("#settings").bind('click.redirectOrToggle', function() { 
     $("#settingsDropdown").toggle(); 
    }); 
    } 
}).triggerHandler('resize'); 
0

而是结合不同的处理程序,单击处理中改变逻辑本身,你可以删除window.resize

/* called outside of window resize*/ 
$('#settings').click(function(){ 
    if($(window).width() < 1400){ 
     window.location = "settings.php"; 
    }else{ 
     $("#settingsDropdown").toggle(); 
    } 

}) 
相关问题