我正在使用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 - $(文件)内部.ready()
$("#myselect").change(function() {
//Does not enter on add or remove of an item
});
答案 0 :(得分:8)
您可以使用DOMSubtreeModified
事件并检查是否有新元素添加到DOM。即,在您的情况下,新option
到特定select
。
$("#SELECT_ID").bind("DOMSubtreeModified", function() {
alert("tree changed");
});
的 DEMO FIDDLE 强>
答案 1 :(得分:7)
您可以收听DOMNodeInserted
事件,并检查特定option
中的新元素是否为select
。
检查:How to call a function in every element in the DOM even if they are dynamically created
答案 2 :(得分:2)
请注意,目前的答案已被弃用,以MutationObserver
API为准。
现在正确的方法如下:
$select = $('#myselect')
const observer = new MutationObserver(
() => { $select.trigger('mutated') }
)
observer.observe($select[0], { childList: true })
然后在事件触发器上执行一些操作:
$select.on('mutated', () => { console.log('mutated') })