2010-12-02 6 views
4

다음 옵션은 ID 식별자를 사용하여 드롭 다운 목록에서 선택하려고하지만 아무 소용이 여기JQuery와

옆에있는 옵션은 내가 #chapter<select> 또는 그 조상 중 하나입니다 가정 코드

$('#chapter option:selected', 'select').removeAttr('selected').next('option').attr('selected', 'selected') 
+0

마크 업은 어떻게 보이나요? #chapter 또는 'select'중 하나는 여기에 중복되어 있습니다. 즉, * all * 선택 항목에서 변경하거나 하나의 특정 선택 항목에서만 변경하려는 것입니다. –

+0

http://jsfiddle.net/은 당신의 친구입니다! – Jakub

+0

난 그냥 <3 http://jsbin.com –

답변

6

입니다 .

이 경우 컨텍스트 인수를 제거하십시오.

$('#chapter option:selected').removeAttr('selected') 
       .next('option').attr('selected', 'selected'); 

당신이 그것을 가지고하는 방법, 당신은 효과적으로 일을했다 :option:selected이 가진 elelent에서 내려 가지고 <select> 내부 요소 을 찾고

$('select').find('#chapter option:selected').removeAttr(... 

을 ... chapter ID.


편집 :이 대답은 왜 선택이 작동하지 않는에 단지 집중했다. @Andy E's answer의 방법을 사용하여 궁극적 인 작업을 수행하는 것이 좋습니다.

나는 수락 응답으로 그 중 하나를 권하고 싶습니다.

+0

OP의 원래 코드 인 것을 알고 있지만'selected' 속성을 지우는 것은 불필요합니다. 다른 옵션 요소에. –

+1

@Andy E -이 문제로 돌아 가자. 좋은 지적. 나는 선택이 왜 작동하지 않는지에 더 집중했다. – user113716

5

그것은 <select> 요소가 여러 속성을 가지고하지 않는 한, 그 형제 중 하나에 추가 할 때 <option> 요소에서 selected 속성을 제거 할 필요가있다.

$("#chapter")[0].selectedIndex++; 

은 말할 것도없고 :

, 당신은 훨씬 더 효율적으로 다시 뿌리 DOM을 취함으로써 뭔가에이 코드를 리팩토링 수있는 가정 patrick dw's answer가 정확한지 (당신이 그것을 수락 한 때문이다) 귀중한 바이트를 단축 코드로 저장합니다.

+1

소중한 바이트. 그것들은 중요합니다. $ ("# chapter") [0] .selectedIndex ++' – Raynos

+0

@Raynos : touché :-) –

+0

+1 이것은 OP가 궁극적으로 성취하려고 시도하는 것을 위해가는 길입니다. – user113716