0

내가 IE이 sample script을 실행 해요 :IE가 내 드롭 다운에 <option>을 추가하지 않는 이유는 무엇입니까?

var $select = $('#select'); 
var $button = $('#button'); 

$button.click(function() { 
    var $option = $('<option />'); 
    $option.text('hello'); 
    $option.appendTo($select); 
}); 

var $tabs = $('#tabs'); 
$tabs.tabs(); 

그것은 꽤 똑바로 앞으로이다 : 버튼을 클릭 때, option가 내 드롭 다운에 추가해야합니다. 이것은 잘 작동합니다 - IE의 기본 fct.

내 문제 :
dropDown을 "열어"다시 닫습니다. 이제 탭 "버튼"으로 전환하고 버튼을 누릅니다. 이제 탭 "선택"으로 전환하십시오 - 새로운 option을 사용할 수 있어야합니다.
IE를 제외한 모든 브라우저에서 효과적입니다. (때로는 IE가 여러 탭 스위치를 사용하여 엉망이됩니다)

스크립트를 수정하려면 어떻게해야합니까?

$button.click(function() { 
    var option = new Option('hello'); 
    $select[0].options.add(option); 
}); 

은 아마도 그 당신을 위해 더 안정적으로 작동합니다 : option DOM 요소 ( live example)를 추가하는 대신 상자를 선택하는 옵션을 추가 할 수있는 훨씬 더 간단하고, 더 크로스 브라우저 친화적 인, 방법은있다

+0

작동하지 않거나 여러 탭을 전환 한 후에도 작동하지 않는다는 말입니까? – GolezTrol

+0

일부 스위치가 작동하지 않는 경우가 있습니다 ... 완전히 작동하는 예제를 사용해보십시오. –

+0

자신의 jsfiddle에서 시도해 볼 수 있습니다 :). 초 단위로 –

답변

3

. (.이 add 있다고 하지pushselect 요소에 options 객체가 정말 배열이 아닌, 참고.)

대신 options.add 당신도 할 수 있습니다 :

$button.click(function() { 
    var options = $select[0].options, 
     option = new Option('hello'); 
    options[options.length] = option; 
}); 

... 또한 추가하는 결국 배열과 같은 방식으로 그러나 add은 신뢰할 수있는 크로스 브라우저입니다.

+0

보다 정확한 방향을 제공하기 위해 동일한 div에서 작업 할 때 문제가 발생하지 않습니다. 어떻게 든 그것은 숨겨진 div에서'select'에 연결되어 있고 이전에 "열린"과 "닫힌"상태입니다. 만약 내가 선택을 그대로두고 스위치 탭을 사용하고'option'을 추가하면 그것은 완벽하게 작동합니다! –

+0

@AndreasNiedermair : 그러나 위의 작업은 안정적으로 이루어 졌습니까? –

+0

네, 지금까지 :) ... 고마워요! (내 cmt 뒤에있는 진짜 아이디어는 잘못된 대답이 아니었고 제 문제에 대한 정확한 해결책이었습니다. jquery 문제입니까? 내가 뭘 잘못하고있는 것입니까? 예. 당신의 마술처럼 전체적인 해결책 외에 진짜 문제를 여기에서 얻는 것은 멋지다) –

관련 문제