0

今私はこれを持っています

jQuery('.widget-prop').keyup(function() {
    var prop = jQuery(this).attr('id');
    var val = jQuery(this).val();

    stuff;
}

jQuery('.widget-prop').click(function() {
    var prop = jQuery(this).attr('id');
    var val = jQuery(this).val();

    stuff;
}

2つの関数は同じなので、外部関数を定義して次のように呼び出すことで簡略化したいと思います。

jQuery('.widget-prop').click('myFunction');

しかし、どのようにパラメータをmyFunctionに渡すのでしょうか?

function myFunction(element) {
    stuff;
}

ありがとう

4

4 に答える 4

2

それらの引用符を取り除きます...

jQuery('.widget-prop').click(myFunction);
于 2012-05-21T15:04:05.513 に答える
1

まず、両方のハンドラーを 1 つに結合できます。

jQuery('.widget-prop').on('click keyup', function() {
    var prop = jQuery(this).attr('id');
    var val = jQuery(this).val();
    // stuff;
});

または、古いバージョンの jQuery の場合:

jQuery('.widget-prop').bind('click keyup', function() { // ... });

次に、jQuery は現在の要素を提供する関数に自動的に適用するため、これを行うと、thisキーワードは引き続きイベントを発生させる要素になります。

jQuery('.widget-prop').on('click keyup', myHandler);

function myHandler() {
    var prop = jQuery(this).attr('id');
    var val = jQuery(this).val();
    // stuff;
}
于 2012-05-21T15:06:06.637 に答える
0

のコンテキストでMyFunction thisは、クリックされた要素です。さらに、clickハンドラーは引数を 1 つ取るため、関数シグネチャはfunction MyFucntion(event)イベント引数がアクションに関するデータを保持する場所 (たとえばevent.target、クリックされた要素) である必要があります。

したがって、これはハンドラーを定義する方法です。

function myFunction(event){
    var element = event.target;
    // Note: event.target == this
    //do stuff
}

これをイベントにバインドする方法は次のとおりです。

$(".widget-prop").click(myFunction);
于 2012-05-21T15:07:19.097 に答える
0

.onショートカットの代わりに関数を使用し、.click必要なすべてのイベントをパラメーターとして渡します。

jQuery('.widget-prop').on('click keyup', function() {
  var prop = jQuery(this).attr('id');
  var val = jQuery(this).val();
  //stuff;
});

編集: 非推奨 => ショートカット

于 2012-05-21T15:07:59.973 に答える