我有一个预定义的函数,我想在两个不同的事件发生时触发。下面的代码工作正常,但是有没有办法将这些代码组合起来以提高代码的效率?
$("select[name=some_selector]").blur(function () {
predefined_function();
});
$("a#some_link").click(function () {
predefined_function();
});
答案 0 :(得分:5)
您只能传递函数参考。当他们处理不同的event
时,我们无法将它们组合在一起。
$("select[name=some_selector]").blur(predefined_function);
$("a#some_link").click(predefined_function)
答案 1 :(得分:5)
将函数的引用传递给两个事件绑定:
$("select[name=some_selector]").blur(predefined_function);
$("a#some_link").click(predefined_function);
这应该可以解决问题。
答案 2 :(得分:3)
function RaisePredefinedOnEvent(selector, ev) {
$(selector)[ev](function () {
predefined_function();
});
}
RaisePredefinedOnEvent("select[name=some_selector]", "blur");
RaisePredefinedOnEvent("a#some_link", "click");
另一种选择(不确定何时你真的需要这样的东西只是为了连接事件,但代码很有趣:-D)
function RaisePredefinedOnEvent() {
for(var i = 0; i < arguments.length; i++) {
//Note: No need to wrap in anonymous function:
$(arguments[i][0])[arguments[i][1]](predefined_function);
}
}
//Code above is quite ugly, but makes this very small
RaisePredefinedOnEvent(
{ "select[name=some_selector]" : "blur" },
{ "a#some_link" : "click" }
);