jQuery宽度变化检测

时间:2014-02-18 16:14:36

标签: javascript jquery resize window-resize

现已解决,谢谢

我已经看到了很多关于resize()问题的答案,这是我的代码:

'greater()'是我想要调用的布局函数,当屏幕宽度与设备方向无关时> = 501,'smaller()'是我想要在屏幕宽度<1时调用的函数。 501。

我的问题是我不希望在window.height更改时调用这些函数。请注意,在我的页面中,我在移动视图中使用手风琴,如果我展开手风琴面板,它会增加页面的高度,即使浏览器窗口没有重新调整大小。 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

一起使用

由于

2 个答案:

答案 0 :(得分:3)

如何存储对前一个宽度的引用,如果在调整大小时宽度已更改,则调用您的函数 - 否则跳过它。像所以:

// 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;
    }
});

答案 1 :(得分:0)

创建一个全局变量,用于跟踪窗口的最后已知宽度。仅当宽度发生变化时,请评估宽度以调用相应的函数。

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