如何检测是否在 SELECT 中添加或删除了 OPTION?
我知道这一点:jquery event for when <option>s are added or removed from a <select>
这个选择框由另一个我无法放入自己的函数调用的 js 控制。
我可以以某种方式检测到该选项已被另一个 js 删除吗?
如何检测是否在 SELECT 中添加或删除了 OPTION?
我知道这一点:jquery event for when <option>s are added or removed from a <select>
这个选择框由另一个我无法放入自己的函数调用的 js 控制。
我可以以某种方式检测到该选项已被另一个 js 删除吗?
您可以尝试为给定的选择元素调用检查函数,使用超时定期检查。
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。
How about patching the append function on the element? Example:
var obj = document.getElementById('#select');
obj.__appendChild = obj.appendChild;
obj.appendChild = function(){
console.log('new option added');
obj.__appendChild.apply(obj, arguments);
}
尝试查看Mutation 事件