2016-08-03 233 views
0

我有一个包含多个select元素的html文件。我们需要的是select元素的每个第一个选项的文本都是用jQuery改变的。给出的答案是$('select').children().first().html('changed!');。但这并没有改变全部第一个选项文本,只有第一个。选择多个选择元素的每个第一个选项

这是怎么回事?

回答

1

使用.each()

$('select').each(function() { 
    $(this).children().first().text('changed!'); 
}); 

请注意,您应该在这种情况下使用text(),不html(),为<option>元素的含量应该是纯文本。

或者,你可以直接选择第一个选项元素,避免使用children()first()

$('select>option:first-child').each(function() { 
    $(this).text('changed!'); 
}); 
+0

是啊,我不知道为什么这本书的作者选择的.html做到这一点。这不是最好的书!该解决方案有效,但直到现在在书中还没有提到。无论如何,谢谢! –

1

您也可以使用nth-child-selector来选择第一,第二....

为了更改您可以使用的所有选定元素的文字:

$('select option:nth-child(1)').text('changed'); 

或:

$('select option:nth-child(1)').text(function(index, text) { 
    return 'changed'; 
}); 

这是因为jQuery提供text-function

的片段:

$(function() { 
 
    //$('select option:nth-child(1)').text('changed'); 
 

 
    // or 
 
    $('select option:nth-child(1)').text(function(index, text) { 
 
    return 'changed'; 
 
    }); 
 
});
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script> 
 

 
<select> 
 
    <option value="volvo">Volvo</option> 
 
    <option value="saab">Saab</option> 
 
    <option value="mercedes">Mercedes</option> 
 
    <option value="audi">Audi</option> 
 
</select> 
 
<select> 
 
    <option value="volvo">Volvo</option> 
 
    <option value="saab">Saab</option> 
 
    <option value="mercedes">Mercedes</option> 
 
    <option value="audi">Audi</option> 
 
</select> 
 
<select> 
 
    <option value="volvo">Volvo</option> 
 
    <option value="saab">Saab</option> 
 
    <option value="mercedes">Mercedes</option> 
 
    <option value="audi">Audi</option> 
 
</select>

+0

哇,这是一个相当的答案!谢谢!这个也很棒。 –

0

有jQuery的两个选项上descants迭代。你已经使用了不迭代迭代的子节点(),意味着只考虑直接子节点。另一个是find()递归迭代,意味着所有孙子节点都与直接子节点一起考虑。我认为如果你改变你的代码如下:

$('select').find("option").first().html('changed!'); 

请不要犹豫地问。希望帮助!

您需要遍历所有的选择:

$("select").each(function(index,item){ 
     $(item).find("option").first().html('changed!'); 
}); 
+0

谢谢你的回答奥斯曼。不幸的是,这并没有奏效。它只改变了第一个选择的第一个选项,而不是其他选项。 –

相关问题