2013-11-12 2 views
0

У меня есть функция, которая срабатывает каждый раз, когда пользователь вводит ключ. Я хотел бы немного свернуть эти события, чтобы события срабатывали с максимальной скоростью (скажем) 500 мс.Свертывание нескольких событий Javascript до одного события

Есть ли простой способ сделать это в Javascript или в популярной библиотеке? Или я должен написать свою собственную логику тайм-аута?

+1

Ищите «debounce» или «throttle» в JavaScript. – elclanrs

+0

Что именно вы имеете в виду? – Markasoftware

ответ

1

Это довольно легко написать свой собственный:

$('element').on('keyup', function() { 
    clearTimeout($(this).data('timer')); // stops the below function if new key 
             // is pressed within 0.5 seconds 
    $(this).data('timer', 
     setTimeout(function() { 

      // do stuff 

     }, 500) 
    ) 
}); 

или вы можете использовать плагин, jQuery Throttle кажется, чтобы быть популярным.

+0

Это, и я написал достаточно собственных решений на протяжении многих лет, которые оказались встроенными ... Я просто подумал, что спрошу. –

+1

Ну, [$ .throttle] (https://github.com/cowboy/jquery-throttle-debounce) кажется популярным, если вам нравятся плагины! – adeneo

+0

adeneo, хотите сделать так, чтобы я мог принять его? –

Смежные вопросы