有效地编写函数

时间:2015-06-02 19:22:22

标签: javascript jquery

我有一个预定义的函数,我想在两个不同的事件发生时触发。下面的代码工作正常,但是有没有办法将这些代码组合起来以提高代码的效率?

$("select[name=some_selector]").blur(function () {
    predefined_function();
 });
$("a#some_link").click(function () {
    predefined_function();
});

3 个答案:

答案 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" }
);