OPTIONがSELECTに追加されたか、SELECTから削除されたかをどのように検出できますか?
私はこれについて知っています:<option>が<select>に追加または削除されたときのjqueryイベント
この選択ボックスは、自分の関数呼び出しを入れることができない別のjsによって制御されています。
そのオプションが別のjsによって削除されたことをどういうわけか検出できますか?
OPTIONがSELECTに追加されたか、SELECTから削除されたかをどのように検出できますか?
私はこれについて知っています:<option>が<select>に追加または削除されたときのjqueryイベント
この選択ボックスは、自分の関数呼び出しを入れることができない別の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です。
ミューテーションイベントを調べてみてください
要素にappend関数をパッチするのはどうですか?例:
var obj = document.getElementById('#select');
obj.__appendChild = obj.appendChild;
obj.appendChild = function(){
console.log('new option added');
obj.__appendChild.apply(obj, arguments);
}