Div在调整大小的窗口后仍然重定向

时间:2013-11-24 19:39:51

标签: javascript jquery

我有这个脚本,在调整窗口大小时使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 = "#";,但它不起作用。

4 个答案:

答案 0 :(得分: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');

答案 1 :(得分:0)

您必须拥有unbind个不再需要的事件处理程序 见unbind

答案 2 :(得分:0)

使用bind和unbind

$(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');

答案 3 :(得分:0)

不是绑定不同的处理程序,而是更改单击处理程序本身的逻辑,然后删除window.resize

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

})