1

OPTIONがSELECTに追加されたか、SELECTから削除されたかをどのように検出できますか?

私はこれについて知っています:<option>が<select>に追加または削除されたときのjqueryイベント

この選択ボックスは、自分の関数呼び出しを入れることができない別の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

ミューテーションイベントを調べてみてください

于 2012-08-30T13:12:41.683 に答える
0

要素にappend関数をパッチするのはどうですか?例:

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 に答える