присоединение одного и того же кода обработки событий к нескольким событиям в jquery - PullRequest
16 голосов
/ 04 февраля 2009

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

$("#inpt").change(function(){
   some code
});

$("#inpt").keypress(function(){
   same code
});

Есть ли способ связать оба события?

Ответы [ 3 ]

39 голосов
/ 04 февраля 2009

Вы можете использовать метод jQuery on.

$("#inpt").on( "change keypress", function () {
     code
});
6 голосов
/ 04 февраля 2009

Вы можете сохранить функцию и связать ее с обоими:

var fn = function(){ /*some code*/ };
$("#inpt").change(fn).keypress(fn);
1 голос
/ 26 июля 2011

Вы также можете использовать событие «live» вместо «bind», которое было предложено. Событие 'live' будет охватывать даже динамически созданные элементы. (устарело в версии 1.7)

Kaless1n и Matthew, для привязки к нескольким элементам используйте «Атрибут начинается с селектора»:

var fn = function() { /*some code*/ };

$('input[id^="foo_"]').click(fn).keyup(fn).keydown(fn);

Это будет связывать все элементы input, где id начинается с foo_. Вы можете изменить 'input' на любой другой элемент и / или 'id', например, с атрибутом name.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...