いくつかのフォーム要素を含む3つのDIVのリスナーがあります。
<div id="div-a">
<input type="text" id="txt-a"/>
<!-- more elements here -->
...
</div>
<div id="div-b">
<input type="text" id="txt-b"/>
<input type="text" id="txt-c"/>
<!-- more elements here -->
...
</div>
<div id="div-c">
<input type="text" id="txt-d"/>
<input type="text" id="txt-e"/>
<input type="text" id="txt-f"/>
<!-- more elements here -->
...
</div>
次のように、3つのDIVの変更イベントをバインドしました。
$("#div-a, #div-b, #div-c").change(function(){
// do something, except if the change happened to txt-b and txt-c
})
上記は、それぞれの子要素のすべてからの変更をリッスンします。それはうまく機能しますが、方程式からもう1つ欠けていることがあります。txt-bおよびtxt-cの変更イベントは私の仕事ではありません。したがって、変更イベントリスナーによって実行されるアクションにそれらを含めてはなりません。また、3つのDIVの下にある各要素には、変更用の独自のリスナーがすでにあるため、要素の各変更イベントにリスナーを追加するのが最後のオプションです。
いくつかの例外を除いて、3つのDIVの子要素からの変更を聞く必要があります。5つの入力タイプを除いて、3つのDIVの子要素が変更されたときに関数を実行する必要があります。
これまでのところ、機能しなかった次のことを行いました。
3つのDIVを分離して、:not()セレクターを追加してみました
$( "#div-b:not(#txt-b)")。change(function(){// ...});
.not()の使用
この問題に取り組むための最善の方法を知りたいです。必要に応じて、さらに情報を追加させていただきます。ありがとうございました。