2011-08-17 58 views
4

第一種選擇我有下拉非常類似:選擇在多組下拉jquery的

<select id='someSelect'> 
    <option value="0">---select one---</option> 
    <optgroup label="Bikes"> 
     <option value="B-4">Hayabusa</option> 
     <option value="B-2">GSXR</option> 
     <option value="B-3">Ninja</option> 
     <option value="B-6">Enticer</option> 
    </optgroup> 
    <optgroup label="Cars"> 
     <option value="C-4">Audi TT</option> 
     <option value="C-2">Awesome Car</option> 
     <option value="C-23">Japanese car</option> 
     <option value="C-9">German car</option> 
    </optgroup> 
</select> 

我只是想(這裏自行車)選擇第一組的第1個要素。我該如何在jQuery中進行討論?

目前,我嘗試這樣做:

$('#someSelect option:nth-child(1)').attr("selected", "selected"); 

,麻煩的是,因爲有三個1元(--select--HayabusaAudi TT)它選擇所有三個,其中finaly選擇Audi TT

我試圖用each做一些事情,並選擇第二個,但後來我意識到,下拉是動態的,我不想選擇默認的(這是--select one--),但第一組

我試圖嘲弄了的jsfiddle,但它打亂了,而不是工作第一要素,不知道爲什麼: -/
you can see it here

+0

請避免褻瀆,它襯托淨保姆,阻止人們使用SO工作,並且傾向於冒犯人們。 –

+0

@Tim,好吧,對不起!那天我很沮喪。將來會避免! – LocustHorde

回答

6

Here是一個例子,這裏是我使用的選擇:

$("#someSelect optgroup option:first").attr("selected", "selected"); 

正如你所看到的,我用了通過查看optgroup元素的第一個選項。

+0

aa這看起來很明顯..有時我的下拉菜單根本沒有任何optgroup,它的效果非常好!雖然我不明白如何..謝謝你的答案! – LocustHorde

2

我總是發現.eq()是很容易使用。這似乎在你的jsfiddle中正常工作。

$('#someSelect option').eq(1).attr("selected", "selected"); 
+0

非常感謝你 – LocustHorde

3

就在您選擇的OPTGROUP:

$('#someSelect optgroup:nth-child(2) option:nth-child(1)') 

只要記住,:nth-child()選擇是基於1,而不是0爲主。此外,在這種情況下,你甚至不需要有資格與標籤名稱的選擇,所以它也可能只是:

從OPTGROUP,而不是選擇
$('#someSelect :nth-child(2) :nth-child(1)') 
+0

非常感謝你! – LocustHorde

4

選擇:

$('optgroup[label=Bikes] option:first') 

或者,如果你不想指定標籤,只是在OPTGROUP過濾以及:

$('optgroup:first option:first') 
+0

感謝您的回答! – LocustHorde

2
$('#someSelect optgroup:first option:first').attr('selected', true); 

這個作品,我對你的htm測試升

+0

謝謝你回答 – LocustHorde

1

select元素的第一optgroup第一個option的選擇與「someSelect」的ID:

"select#someSelect > optgroup:nth-child(1) > option:nth-child(1)" 
+0

是的,這讓我瞭解它背後的理論,非常感謝你! – LocustHorde