2014-02-18 109 views
1

現在問題解決了,感謝jQuery的寬度變化檢測

我看到附近有很多答案我的問題並調整其大小(),這裏是我的代碼:

「大()」是一個佈局函數,當屏幕寬度不管設備的方向是> = 501,'smaller()'是我想要調用的函數,當屏幕寬度爲< 501時。

我的問題是,我不希望這些函數在window.height cha nges。請注意,在我的頁面中,我在移動視圖中使用了手風琴,並且如果我展開手風琴面板,即使瀏覽器窗口沒有重新調整大小,它也會爲頁面添加高度。 jQuery將此視爲window.resize。

$(window).resize(function(e) { 
    var winWidth = $(window).width(); 
    if (winWidth >= 501){ 
     larger(); 
    } 
    if (winWidth < 501){ 
     smaller(); 
    } 
}); 

任何答案讚賞,並讓我知道如果我需要澄清任何東西。

我使用jquery-1.11.0.min.jsjquery-ui-1.10.3.custom.min.js

感謝

+0

現在問題解決了,感謝gimg1 –

回答

3

如何存儲到先前的寬度的參考,如果寬度對調整大小改變,那麼調用您的函數 - 否則跳過它。 Like So:

// If you don't want it to change the first time 
// then set this value on document load to get initial window width 
var prevWinWidth = 0; 

$(window).resize(function(e) { 
    var winWidth = $(window).width(); 

    if(winWidth != prevWinWidth) { 
     if (winWidth >= 501){ 
      larger(); 
     } 
     if (winWidth < 501){ 
      smaller(); 
     } 
     prevWinWidth = winWidth; 
    } 
}); 
+0

喜的問題是,我不希望嵌套函數來獲取呼籲高度的變化,網頁高度的變化時。我想我需要的是一種檢測物理瀏覽器重新大小的方法,而不是窗口 –

+0

但是,如果沒有寬度變化時發生高度變化,它們將不會被調用。如果你不希望被調用的功能,如果高度已經改變,然後使用一個變量也跟蹤高度變化,並只調用你的功能時,寬度已經改變,但高度沒有 – gimg1

+0

你的權利,感謝問題解決 –

0

創建一個全局變量,用於跟蹤窗口的最後已知寬度。只有當寬度發生變化時,才能評估寬度以調用相應的函數。

var lastWidth = 0; 
$(window).resize(function (e) { 
    var winWidth = $(window).width(); 
    if (lastWidth !== winWidth) { 
     winWidth >= 501 ? larger() : smaller(); 
     lastWidth = winWidth; 
    } 
});