如何检测是否在SELECT中添加或删除OPTION?
我知道这件事:jquery event for when <option>s are added or removed from a <select>
这个选择框由另一个js控制,我无法将自己的函数调用。
我能否以某种方式检测到另一个js删除了该选项?
答案 0 :(得分:1)
您可以尝试为给定的选择元素调用检查函数,使用超时定期检查。
function periodicallyCheckSelect(){
var jSelect = $(this)
,opts = this.options
,prevLen = +jSelect.attr('data-previousLen') || opts.length
,isEq = false
,isAdded = false
,isRemoved = false
,state = '';
isEq = opts.length === prevLen;
isAdded = opts.length > prevLen;
isRemoved = opts.length < prevLen;
state = isEq ? 'no change'
: isAdded ? opts.length-prevLen + ' option(s) added'
: prevLen-opts.length+' option(s) removed';
jSelect.attr('data-previousLen',opts.length);
log(state+'<br>');
}
这是一个jsfiddle玩这个想法。
答案 1 :(得分:0)
尝试浏览Mutation events
答案 2 :(得分:0)
如何在元素上修补append函数?例如:
var obj = document.getElementById('#select');
obj.__appendChild = obj.appendChild;
obj.appendChild = function(){
console.log('new option added');
obj.__appendChild.apply(obj, arguments);
}