どのHTML要素が共通のハンドラをトリガしたかに基づいて、追加の関数を呼び出すにはどうすればよいですか?

選択ボタンの共通のイベントハンドラがあります。

私のコードは:

    $(document).ready(function(){$("#delAppSelectApp,#userAppSelectApp,#hexSelectApp,#countSelectApp").change(function(){
    ......
    });});

「countSelectApp」の選択を変更すると追加機能が呼び出される 共通ハンドラ。

私は使ってみた

    alert(this.toSource())

どの選択がハンドラをトリガしたかを確かめるために、私が得るのはアラートです

    [object HTMLelement]
0

3 答え

イベントハンドラ内では、jQueryはイベントが適用されるDOM要素になるように this を設定します。したがって、DOMイベントに適用されるプロパティまたはメソッドに直接アクセスすることができます。 jQueryメソッドにアクセスするにはcode> $(this)を使用します。

したがって、イベントが適用された "countSelectApp"であったかどうかをテストする最も簡単な(そして確かに最も効率的な)方法は、 this.id を使用することだけです。

if (this.id === "countSelectApp") {
  //call your function here
}

ちなみに、jQueryセレクタ内のすべての要素IDをリストするのではなく、これらの要素に共通のクラス、たとえば "selectApp"を指定し、クラスをセレクタとしてバインドする変更ハンドラをバインドします。

$(".selectApp").change(function() {
   if (this.id === "countSelectApp") {
     //call your function here
   }
...
});
4
追加された
クラスを追加する....なぜ私はそれを考えるのか???ありがとう!
追加された 著者 dinchakpianist,

尋ねる:

if($(this).attr('id')=="countSelectApp")
     callYourFunction();
2
追加された

イベントオブジェクトは次のように使用できます。

$('selector').change(function(event) {
  console.log(event.target);
});
1
追加された