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イベントで作成済みの関数を呼び出し、上の例の1行表記を使用してパラメーターを渡したいと思います。どうすればよいですか?

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 に答える