选择选项是添加或删除事件

时间:2012-08-30 13:06:22

标签: javascript jquery

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

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

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

我能否以某种方式检测到另一个js删除了该选项?

3 个答案:

答案 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); 
}