2

オブジェクトを動的に作成し、それにonclickイベントをバインドしています:

jQuery('<a/>', {
    click: function() { foo(arg1, arg2) },
    ...
})

すべてが正常に機能しています。問題は、引数を使用して関数をfunciton()呼び出すためのラッパーを必要としないように単純化できるかどうかです。foo

前もって感謝します。

4

2 に答える 2

3

jQuery イベント ハンドラーに追加の引数を渡すことはできません。jQuery はイベント オブジェクトを 1 つの引数としてイベント ハンドラーに渡します。

jQuery 1.7 以降では、on()関数を使用して、ハンドラー内で使用するデータを含むオブジェクトを渡すことにより、イベント オブジェクトを拡張できます。event.dataオブジェクトのデータにアクセスできます

function foo(event) {
    event.data.arg1;
    event.data.arg2;    
}

jQuery('<a/>').on('click', {arg1: val1, arg2: val2}, foo)
于 2013-07-22T13:47:13.660 に答える
2

匿名関数によって提供される追加のクロージャは必要な手順です — ECMAscript 5 のサポートが確実でない限り (IE8 以下ではサポートされていません)、その場合は次のbindメソッドを使用できます。

jQuery('<a/>', {
    click: foo.bind(this, arg1, arg2)
})

のシムを含むUnderscoreマイクロライブラリを含める意思がある場合は、IE8 以下でもこのメソッドを使用できます。bind

jQuery('<a/>', {
    click: _.bind(foo, this, arg1, arg2)
})

これらのいずれかを実行できない場合は、運が悪いです。

于 2013-07-22T13:46:36.893 に答える