Объединение двух обработчиков событий, jQuery - PullRequest
4 голосов
/ 15 декабря 2009

У меня есть два события, которые я хочу наблюдать на объекте,

input.blur(function(event) {
  ajaxSubmit(this);
  event.preventDefault();
});

form.submit(function(event) {
  ajaxSubmit(this);
  event.preventDefault();
});

Но я чувствую, что это недостаточно сухо, могу ли я связать два события с моим объектом input и выполнить свою функцию ajaxSubmit(), если любой из них сработает?


Что было бы очень круто, если бы вы могли сделать:

input.bind("blur", "submit", function(event) {
  ajaxSubmit(this);
  event.preventDefault();
});

Ответы [ 2 ]

11 голосов
/ 15 декабря 2009

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

$("#yourinput").on("blur submit", functionname);

Может объединять любое количество событий; разделите их пробелом.

4 голосов
/ 15 декабря 2009

Да, просто объявите функцию и затем привяжите ее к событиям:

var ajaxCallback = function(event){
  ajaxSubmit(this);
  event.preventDefault();
};

input.blur(ajaxCallback);
form.submit(ajaxCallback);

Примечание по объявлению переменной:

Как указывает @cletus, способ, которым я объявляю функцию, предоставляет переменную, которая является частной для той области, в которой она определена. Я всегда программирую этот способ, чтобы минимизировать загрязнение глобального пространства имен. Однако, если вы не определяете как этот обратный вызов , так и , связывающий его с элементами в одном и том же блоке кода, вы должны определить его следующим образом:

function ajaxCallback(event){ ... }

Таким образом, он доступен везде, где вы позже связываете его, используя методы .blur и .submit.

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