JQuery .on()具有多个包含和排除的复杂选择器

时间:2016-01-25 04:30:23

标签: javascript jquery

我有一个表单,我想根据输入更改值自动保存,但我的选择器出现问题。我的问题似乎特别针对我试图排除的输入,因为当这些输入发生变化时函数仍会触发。

$('#OrderDetailsTabs').on('change',
    'form[id^="frmWorkOrderHdr"] input[type=text],form[id^="frmWorkOrderHdr"] input[type=number], form[id^="frmWorkOrderHdr"] select, form[id^="frmWorkOrderHdr"] textarea, input:not("#WOHdr_FinishedGoodsItemId_AutoComplete, .itemSelectorCategory1, .itemSelectorCategory2")',
    function () {
    saveWOHdr(event, this);
})

例如,当输入#WOHdr_FinishedGoodsItemId_AutoComplete发生更改时,saveWOHdr事件仍在触发,this对象确实是#WOHdr_FinishedGoodsItemId_AutoComplete输入。

我到目前为止的选择器是我在阅读this other SO answer后想出的。

我认为我所拥有的包含选择器字符串也可以被清理以减少重复的form[id^="frmWorkOrderHdr"]父限定符...但我不想太过花哨,直到我得到它至少表现我的方式想。

1 个答案:

答案 0 :(得分:0)

给他们一个共同的课程。

<input class="save-auto some-other-style-class">

使选择器 sooooo 变得简单

$('#OrderDetailsTabs').on('change','.save-auto', saveWOHdr);

更容易阅读,更容易看到这些元素进行故障排除