2012-01-11 4 views
1

다음 마크 업에서 a1, (all) 및 a 옵션을 가져오고 싶습니다. 일부 optgroup을 선택하기 전까지 $("option:first-child")을 사용하고있었습니다. 이제이 코드는 a1, b1, (all), 1, 3 및 a를 선택합니다.첫 번째 옵션을 모두 선택

<select> 
    <optgroup label="a"> 
    <option>a1</option> 
    <option>a2</option> 
    </optgroup> 
    <optgroup label="b"> 
    <option>b1</option> 
    <option>b2</option> 
    </optgroup> 
</select> 

<select> 
    <option>(all)</option> 
    <optgroup label="a"> 
    <option>1</option> 
    <option>2</option> 
    </optgroup> 
    <optgroup label="b"> 
    <option>3</option> 
    <option>4</option> 
    </optgroup> 
</select> 

<select> 
    <option>a</option> 
    <option>b</option> 
    <option>c</option> 
</select> 

답변

3
$("select > option:first-child, optgroup:first-child > option:first-child") 

첫 번째 부분은 전혀 optgroup에 처음 optionselect에 대한의를 얻을 것이다. 두 번째는 optgroup의 첫 번째 option이됩니다.

첫 번째 옵션이 (all) 옵션이고 a이 아니기 때문에 a을 얻지 못할 것이라고 생각하기 때문에 원래 예제에서 약간 혼란 스럽지만 말입니다.

+0

죄송 selectboxes 검사, 내 예를 들어 내가이 여전히 작동한다고 생각 – Homer

+0

불완전했다. http://jsfiddle.net/zh4X8/1/ 예제를 위해 멀티를 만들었 기 때문에 어느 것이 빨간색으로 만들어 졌는지 명확하게 볼 수 있습니다. –

2

이 A1을 선택합니다 (모든)와 각 선택에

$('select').find('option:first').each(function(ix) { alert(this.text); }); 

사실이 항상 첫 번째 옵션을 선택합니다.

0

나는 이것이 당신을 위해 그것을해야한다고 생각 :

$('optgroup.a > option:first-child, select > option:first-child') 

당신은 option 어떤 select의 첫 번째 자식을 선택, 또한, 특별히 클래스 aoptgroup의 첫 번째 자식을 선택하고 그 option입니다.

$('select optgroup[label]["a"] option:eq(0),select:eq(1) option:eq(0)').attr('selected', 'selected'); 

데모 : 방문 :

0
+0

이 완전히 작동하지 않는다면, $ (선택 optgroup [label = "a"] 옵션 : eq (0), select : eq (1) 옵션 : eq (0) ')'을 의미한다고 생각합니다. 또한 더 일반적이어야합니다. 페이지에 10 개의 다른 선택이 있습니다. 나는 수동으로 코드를 작성하고 싶지 않다. – Homer

관련 문제