添加将列表项添加到<选择> jQuery 时要捕获的事件

adding an event to catch when a list item is added to a <select> jQuery

本文关键字:添加 事件 jQuery 选择 列表      更新时间:2023-09-26

我正在使用jQuery将事件添加到选择(多个)控件。这个想法是在列表中添加或删除项目时执行此事件。我已经尝试了$("#myselect").change()函数,但这仅在您在列表中选择其他项目时引发事件。任何帮助将不胜感激。提前感谢!

更新:

HTML (为此示例自动生成,我输入了我的ID)

<select id="myselect" style="width: 143px; height: 125px; overflow: scroll;" ondblclick="GipRemoveSelectedItems(ctl00_ctl19_g_f081466b_5035_4884_b6db_009508a22e1c_ctl00_ctl05_ctl01_ctl00_ctl00_ctl04_ctl00_ctl00_MultiLookupPicker_m); return false" onchange="GipSelectResultItems(ctl00_ctl19_g_f081466b_5035_4884_b6db_009508a22e1c_ctl00_ctl05_ctl01_ctl00_ctl00_ctl04_ctl00_ctl00_MultiLookupPicker_m);" multiple="multiple" jQuery172007786130460086404="3"/>

jQuery- 在 $(document).ready() 内部

$("#myselect").change(function() {
    //Does not enter on add or remove of an item
});
您可以使用

DOMSubtreeModified事件并检查是否将新元素添加到 DOM.即,在您的情况下,新option特定select

$("#SELECT_ID").bind("DOMSubtreeModified", function() {
    alert("tree changed");
});

演示小提琴

您可以侦听 DOMNodeInserted 事件并检查新元素是否是特定selectoption

检查:如何在 DOM 中的每个元素中调用函数,即使它们是动态创建的

请注意,当前答案已被弃用,取而代之的是MutationObserver API。

现在正确的方法是这样的:

$select = $('#myselect')
const observer = new MutationObserver(
    () => { $select.trigger('mutated') }
)
observer.observe($select[0], { childList: true })

然后在事件触发器上执行某些操作:

$select.on('mutated', () => { console.log('mutated') })