2013-11-24 116 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(); 
    } 

}) 
相關問題