jQuery – 窗口resize; 后

我目前正在使用jQuery的resize函数,但由于我在resize时所做的调整,因为它在每次调整时都会触发,所以会让它看起来很平滑。

$(window).resize(function() { myFunction(); }); 

有没有办法在resize停止后关闭一个函数? 喜欢$(window).afterResize()还是什么?

任何解决方案欢迎

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

但你像这样“破解”它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 } }); 

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

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

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