结合两个事件处理程序,jQuery

时间:2009-12-15 04:20:08

标签: javascript jquery

我想在一个对象上观察两个事件,

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 个答案:

答案 0 :(得分:10)

您可以使用on方法

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

可以组合任意数量的事件;用空格隔开它们。

答案 1 :(得分:4)

是的,只需声明该函数,然后将其绑定到事件:

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

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

关于变量声明的注意事项:

正如@cletus指出的那样,我声明函数的方式提供了一个变量,该变量对于它定义的任何范围都是私有的。我总是以这种方式编程以最小化污染全局命名空间。但是,如果您定义此回调将其绑定到同一代码块中的元素,则应以这种方式定义:

function ajaxCallback(event){ ... }

这样,只要您稍后使用.blur.submit方法将其绑定,就可以使用它。