JavaScript/JQuery: $ (окно) .resize, как стрелять ПОСЛЕ изменения размер, завершается?

Я использую JQuery как таковой:

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

Однако кажется это, если человек вручную изменяет размер их окон браузера путем перетаскивания края окна для создания этого большим/меньшим, .resize событие выше огней многократно.

Вопрос: Как я вызываю функцию ПОСЛЕ ТОГО, КАК окно браузера изменяет размер завершенный (так, чтобы событие только стреляло однажды)?

228
задан armstrhb 27 November 2012 в 09:39
поделиться

1 ответ

Я использую следующую функцию для задержки повторных действий, она будет работать в вашем случае:

var delay = (function(){
  var timer = 0;
  return function(callback, ms){
    clearTimeout (timer);
    timer = setTimeout(callback, ms);
  };
})();

Использование:

$(window).resize(function() {
    delay(function(){
      alert('Resize...');
      //...
    }, 500);
});

Переданная ей функция обратного вызова будет выполняться только при последнем вызове задержка была сделана по прошествии указанного периода времени, в противном случае таймер будет сброшен, я считаю это полезным для других целей, например, для определения того, когда пользователь перестал печатать, и т. д.

122
ответ дан 23 November 2019 в 03:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: