如何等待“调整大小”事件的“结束”,然后才执行操作?

2022-08-30 00:05:03

所以我目前使用这样的东西:

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

但是,在调整大小过程继续进行时,这被调用了很多次。是否可以在事件结束时捕获事件?


答案 1

您可以使用和setTimeout()clearTimeout()

function resizedw(){
    // Haven't resized in 100ms!
}

var doit;
window.onresize = function(){
  clearTimeout(doit);
  doit = setTimeout(resizedw, 100);
};

jsfiddle 上的代码示例。


答案 2

我很幸运地提出了以下建议:http://forum.jquery.com/topic/the-resizeend-event

这是代码,所以你不必挖掘他的帖子的链接和来源:

var rtime;
var timeout = false;
var delta = 200;
$(window).resize(function() {
    rtime = new Date();
    if (timeout === false) {
        timeout = true;
        setTimeout(resizeend, delta);
    }
});

function resizeend() {
    if (new Date() - rtime < delta) {
        setTimeout(resizeend, delta);
    } else {
        timeout = false;
        alert('Done resizing');
    }               
}

感谢sime.vidas的代码!