2012-08-30 4 views
1

OPTION이 SELECT에 추가되거나 SELECT에서 제거되었는지 어떻게 알 수 있습니까?선택 옵션이 추가 또는 제거되었습니다.

나는 이것에 대해 알고 jquery event for when <option>s are added or removed from a <select>

이 선택 상자는 내가 내 자신의 함수 호출을 넣을 수 없습니다 다른 JS에 의해 controled된다

은 어떻게 든 감지 할 수있는 옵션이 다른 JS에 의해 삭제되었습니다. ?

+0

* 어떻게 * 추가되었거나 제거 되었습니까? 작업 할 수있는 추상화 방법이 있습니까? – David

+0

그들은이 jQuery 플러그인 http://www.texotela.co.uk/code/jquery/select/에 의해 조작되는 – mgalesic

+0

하지만 난 다른 사이트 – mgalesic

답변

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이다.

+0

나는이 해결책을 좋아한다. 선택 상자가 페이지에 있는지 확인한 후 변경 사항 확인을 시작합니다. – mgalesic

0

통해보고하려고? 예 :

var obj = document.getElementById('#select'); 
obj.__appendChild = obj.appendChild; 
obj.appendChild = function(){ 
    console.log('new option added'); 
    obj.__appendChild.apply(obj, arguments); 
} 
+0

@mgalesic 위의 솔루션은 폴링 및 불필요한 응답/시스템 부하를 방지합니다. 재정의 메서드를 테스트 할 수 있습니다. – closure

관련 문제