Подтвердить что ты не робот

Добавление одного и того же кода обработки событий в несколько событий в jquery

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

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

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

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

4b9b3361

Ответ 1

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

$("#inpt").on( "change keypress", function () {
     code
});

Ответ 2

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

var fn = function(){ /*some code*/ };
$("#inpt").change(fn).keypress(fn);

Ответ 3

Вы также можете использовать "живое" событие, а не "связывать", зашитое. Событие "live" будет охватывать даже динамические созданные элементы. (Устаревший на 1.7)

Kaless1n и Matthew, чтобы привязать к нескольким элементам, используйте "Attribute Starts With Selector":

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

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

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