jQuery,.each()和孩子们

时间:2011-11-15 16:37:12

标签: javascript jquery

我正在尝试查找并设置页面上许多选择框的第一个选项。

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

第二行是失败的地方。我似乎无法定位组中每个选择框的第一个选项。

5 个答案:

答案 0 :(得分:5)

您不需要.each();这样做:

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

答案 1 :(得分:3)

你在滥用选择器。

您需要撰写$(this).children('option:first-child').attr('selected', true)

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

答案 2 :(得分:2)

你不应该联合this,你应该将它用于范围

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

或者,简明扼要地说(保持在.each循环中)

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

尽管正如其他人所说,但没有必要使用.each。事实上,nth-child专门用于避免使用.each

答案 3 :(得分:1)

尝试:

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

答案 4 :(得分: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');
    });
});