JQuery несколько событий для запуска одной и той же функции

17.6.5.15 [lib.types.movedfrom]

Объекты типов, определенные в стандартной библиотеке C ++, могут быть перемещены из (12.8). Операции перемещения могут быть явно указаны или неявно сгенерированы. Если не указано иное, такие перемещенные объекты помещаются в действительное, но неуказанное состояние.

blockquote>

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

Примеры операций, которые обычно не имеют предварительных условий:

  • destroy
  • присваивание
  • const наблюдатели, такие как get, empty, size

Примеры операций, которые в целом имеют предварительные условия:

  • разыменование
  • pop_back

Этот ответ теперь появляется в видеоформате здесь: http://www.youtube.com/watch?v=vLinb2fgkHk&t=47m10s

903
задан rakibulmuhajir 17 June 2018 в 15:37
поделиться

3 ответа

Вы можете использовать .on () , чтобы привязать функцию к нескольким событиям:

$('#element').on('keyup keypress blur change', function(e) {
    // e.type is the type of event fired
});

Или просто передать функцию как параметр к обычным функциям событий:

var myFunction = function() {
   ...
}

$('#element')
    .keyup(myFunction)
    .keypress(myFunction)
    .blur(myFunction)
    .change(myFunction)
1727
ответ дан 19 December 2019 в 20:22
поделиться

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

$('#foo').bind('mouseenter mouseleave', function() {
  $(this).toggleClass('entered');
});

Другой вариант - использовать поддержку цепочек в jquery api.

23
ответ дан 19 December 2019 в 20:22
поделиться

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

Похоже, что на самом деле вам нужно что-то вроде этого:

$('#ValidatedInput').keydown(function(evt) {
  // If enter is pressed
  if (evt.keyCode === 13) {
    evt.preventDefault();

    // If changes have been made to the input's value, 
    //  blur() will result in a change event being fired.
    this.blur();
  }
});

$('#ValidatedInput').change(function(evt) {
  var valueToValidate = this.value;

  // Your validation callback/logic here.
});
17
ответ дан 19 December 2019 в 20:22
поделиться
Другие вопросы по тегам:

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