我正在尝试根据变量在<select>
标记中预选一个选项。
但是,当通过jQuery选择元素并使用.each()迭代它时,它似乎返回整数而不是对象,因此.value等不适用。
这是我的代码:
$("#id option").each(function(option){
if(option.value == "myValue") {
option.value.selected = "true";
}
});
答案 0 :(得分:2)
如果您想要元素引用,则each
函数不正确,那么each
中应该有第二个参数,因为第一个参数是index
引用参数。其次,您只需使用val()
函数设置下拉列表的值。
$("#id option").each(function(index,option){
if(option.value == "myValue") {
$("#id").val('myValue');
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id='id'>
<option value="volvo">volvo</option>
<option value="saab">Saab</option>
<option value="myValue">myValue</option>
<option value="audi">Audi</option>
</select>
或者您只需使用$(this)
:
$("#id option").each(function(){
//check value of each option
if($(this).val() == "myValue") {
$("#id").val('myValue');
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id='id'>
<option value="volvo">volvo</option>
<option value="saab">Saab</option>
<option value="myValue">myValue</option>
<option value="audi">Audi</option>
</select>
答案 1 :(得分:1)
jQuery&#39; each
的第一个参数是索引,而不是对象。试试这个:
$("#id option").each(function(i, option){
(如果您不关心索引i
,请随意不要使用它,但如果您想使用该值,则必须首先包含索引的参数)
本机数组迭代方法使用更合理的方法并首先列出有问题的元素,例如:
document.querySelectorAll('#id option').forEach((option) =>
因此,您必须仔细跟踪您正在使用的方法。
答案 2 :(得分:0)
你可以使用$(this)
来获取每个项目
$("#id option").each(function () {
console.log($(this).val());
});
答案 3 :(得分:0)
只需在代码中添加索引
即可$("#id option").each(function(index, option){
由于每个函数都有2个参数索引和对象,如果只添加1,它将被视为第一个参数,即索引。
答案 4 :(得分:0)
each
的回调函数中的第一个参数是索引,第二个参数是元素。
$("#id option").each(function(index, option){
if(option.value == "myValue") {
option.value.selected = "true";
}
});