2011-11-15 90 views
3

我正試圖找到並設置頁面上的許多選擇框的第一個選項。jQuery,.each()和兒童

$('ul#mygroup li select').each(function() { 
    $(this +' option:nth-child(0)').attr('selected', 'selected'); 
}); 

第二行是失敗的地方。我似乎無法定位組中每個選擇框的第一個選項。

回答

5

你不需要.each();只是這樣做:

$('#mygroup li select option:first-of-type').prop('selected', true); 
+2

使用jQuery prop()會更準確 –

+0

@JohnHartsock:更改。 – Ryan

3

你濫用選擇器。您需要編寫$(this).children('option:first-child').attr('selected', true)

您也可以直接寫$('ul#mygroup li select').prop('selectedIndex', 0)

2

你不應該串聯this,你應該使用它的範圍

$('option:first',this).attr('selected','selected'); 

或者,簡潔你說(保持它的.each環路內)

$(this).find('option:first').attr('selected','selected'); 

雖然,正如其他人所說,有沒有必要使用.each。事實上,nth-child是專門那裏避免使用.each

1

與嘗試:

$('ul#mygroup li select').each(function() { 
    $(this).children('option').first().attr('selected', 'selected'); 
}); 
0

希望這會爲你工作。

<select name="type1"> 
    <option value="1">Option 1</value> 
    <option value="2">Option 2</value> 
    <option value="3">Option 3</value>  
</select> 

<select name="type2"> 
    <option value="1">Option 1</value> 
    <option value="2">Option 2</value> 
    <option value="3">Option 3</value>  
</select>   

<select name="type3"> 
    <option value="1">Option 1</value> 
    <option value="2">Option 2</value> 
    <option value="3">Option 3</value>  
</select>  


$(function(){ 
    $('select').each(function() { 
     $(this).children().first().attr('selected', 'selected'); 
     $(this).children().first().attr('style', 'color: blue'); 
    }); 
}); 
+0

http://jsfiddle.net/theinhlamaw/gU9Ng/ –