1

如何检测是否在 SELECT 中添加或删除了 OPTION?

我知道这一点:jquery event for when <option>s are added or removed from a <select>

这个选择框由另一个我无法放入自己的函数调用的 js 控制。

我可以以某种方式检测到该选项已被另一个 js 删除吗?

4

3 回答 3

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

于 2012-08-30T13:50:37.813 回答
0

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); 
}
于 2012-08-30T13:48:50.877 回答
0

尝试查看Mutation 事件

于 2012-08-30T13:12:41.683 回答