4

私のプログラムでは、イベントハンドラー関数のごく一部のクラスがそれぞれ異なることを除いて、多くのボタンに対して同じことを行うクリックイベントがあります。現在、これには匿名関数を使用しています。このイベントに付随する関数はかなり長く、ボタンがたくさんあると思います(おそらく60かそこら?)。現在動作している関数を60回コピーして貼り付けることはできますが、それではjavascriptファイルが巨大になります。

$('#some_button').on('click', my_event_handler("my_arg") );
私がやりたいのは、on()関数の外でイベントハンドラー関数を定義することです。これにより、コードが本当に単純化されると言えます。

私はjsフィドルを作成しました。そのようなものは、私がやろうとしていることの非常に小さな例を示しています。

http://jsfiddle.net/AsmmF/

唯一の問題は、それを動作させることができないということです!

テッドに会いに行き、戻ってきたら私の問題に対するあなたの解決策を試してみます。

あなたが私に提供できるどんな助けにも感謝します!

4

3 に答える 3

5

関数呼び出しを無名関数でラップする必要があります。

$('#some_button').on('click', function() {my_event_handler("my_arg");} );

于 2012-07-02T23:20:48.923 に答える
3
$('#some_button').on('click', my_event_handler("my_arg") )

する必要があります:

$('#some_button').on('click', null, "my_arg", my_event_handler);

ライブデモ

于 2012-07-02T23:21:09.687 に答える
2

関数が関数を返すようにします。

function button_click(some_var) {
    return function() {
        $('#button').after('<p>This is being attached: ' + some_var + '</p>');
    };
};
$('#button').on('click', button_click("hello") );

( http://jsfiddle.net/63Le2/のデモ)

于 2012-07-02T23:26:15.397 に答える