Отменить событие с несколькими входами, которые используют один и тот же прослушиватель событий

#javascript #jquery #debounce

#javascript #jquery #удаление

Вопрос:

Я применяю событие отмены к нескольким входам. Как мне отменить только изменения, поступающие с одного и того же ввода. Например, у меня есть два входных HTML-рендеринга через цикл. Единственными доступными идентификаторами являются data-id те, которые поступают из базы данных.

 <input data-id="1" />
<input data-id="2" />
  

Где data-id — это то, что выполняется динамически и отображается с помощью цикла. Итак, я подключил ajax к вводу keyup и хотел бы отменить их, чтобы он не запускался тысячи раз при вводе пользователем. Вот мой javascript:

 $(document).on('keyup', '[data-id]', _.debounce(function () {
    // Ajax here
    $.post('/some_url', { some_data })
}, 1000);
  

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

Интересно, как мне отличить отмену <input> только для каждого.

Ответ №1:

Перебирайте входные данные с each помощью so, чтобы вы могли вызывать _.debounce для каждого из них:

 $('[data-id]').each(function() {
  $(this).on('keyup', _.debounce(function () {
    // ...