jQuery - 窗口调整大小;后

时间:2011-09-13 13:44:31

标签: javascript jquery

我目前正在使用jQuery的调整大小功能,但由于我在调整大小时所做的调整,因此只需要进行太多调整就可以使其看起来平滑,因为它会在每次调整时触发。

$(window).resize(function() {

myFunction();

});

有没有办法在调整大小停止后关闭某个功能?喜欢$(window).afterResize()还是什么?

欢迎任何解决方案。

3 个答案:

答案 0 :(得分:7)

设置超时并可能在100分钟后执行操作。

var timer;
$(window).resize(function() {
    clearTimeout(timer);
    timer = setTimeout(myFunction, 100);
});

答案 1 :(得分:1)

我不确定是否有一种“干净”的本地方式来做这件事(希望有,有人会光明)

但你像这样http://jsfiddle.net/tuuN3/

“破解”它
var myInterval = false; // this variable will hold the interval and work as a flag
var $win = $(window); //jquery win object
var dimensions = [ $win.width(), $win.height() ]; //initial dimensions

$(window).resize(function() { //on window resize...

    if( !myInterval ) //if the interval is not set,
    {
        myInterval  = setInterval( function() { //initialize it
            //and check to see if the dimenions have changed or remained the same
            if( dimensions[ 0 ] === $win.width() && dimensions[ 1 ] ===  $win.height() )
            {   //if they are the same, then we are no longer resizing the window
                clearInterval( myInterval ); //deactivate the interval
                myInterval = false; //use it as a flag

                doStuff(); //call your callback function
            }
            else
            {
                 dimensions[ 0 ] =    $win.width(); //else keep the new dimensions
                 dimensions[ 1 ] =    $win.height();
            }
        }, 64 );  //and perform a check every 64ms
    }

});

答案 2 :(得分:1)

你应该研究与javascript相关的“debounce”或“throttle”。根据您的需要 - 您可能需要使用其中一个。 Here是我使用的去抖动/油门库以及对其应用程序的精彩描述。没有必要重新发明轮子 - 另外,了解术语并识别有用的编码模式(代码的未来维护者)总是很棒。