4

我知道你可以通过点击调用一个函数:

$(".foo").on("click", function);
// Assume 'function' is an actual function declared elsewhere.

但是有没有办法使用这种风格将参数传递给函数?我知道你可以这样做:

$(".foo").on("click", {namespace: this}, function (e) {
    var that = e.data.namespace;

    that.function(that);
});

但这不是我想写的。我想在 .click 事件上调用已创建的函数,并使用顶部示例的单行表示法将参数传递给它。我该怎么做呢?

4

2 回答 2

5

不幸的是,你不能完全按照你的要求做,但你可以通过调用回调函数内部的函数来非常接近:

$(".foo").on('click', function () { namedFunction.call(this, yourArguments); });

如果它适合你,你可以使用它.apply来代替。.call

于 2013-02-04T23:36:46.690 回答
2

此外,您还可以使用bind

function namedFunction(yourArgument, e) {
    console.log(yourArgument);
}

$(".foo").on("click", namedFunction.bind(this, yourArgument));

此方法已添加到 ECMA-262 第 5 版中,可能与旧浏览器存在兼容性问题。您可以查看MDN以了解可能的解决方法。

于 2013-02-04T23:41:08.300 回答