我有一个包含多个表单元素的 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
})
以上内容从它们各自的所有子元素中监听变化。它工作正常,但等式中还缺少一件事。txt-b 和 txt-c 更改事件不关我的事。因此,我不能将它们包含在更改事件侦听器正在执行的操作中。此外,3 DIV 下的每个元素都已经有自己的更改监听器,因此将监听器添加到每个元素的更改事件是最后的选择。
我需要听取三个 DIV 的子元素的变化,但有一些例外。当三个 DIV 的子元素发生变化时,我需要执行一个函数,除了 5 个输入类型。
到目前为止,我做了以下没有用的操作:
我尝试分离三个 DIV 并添加了 :not() 选择器
$("#div-b :not(#txt-b)").change(function(){ //... });
使用 .not()
我想知道解决这个问题的最佳方法。如果您需要,我很乐意添加更多信息。谢谢你。