为什么jQuery返回整数而不是对象?

时间:2018-03-30 06:13:45

标签: javascript jquery

我正在尝试根据变量在<select>标记中预选一个选项。 但是,当通过jQuery选择元素并使用.each()迭代它时,它似乎返回整数而不是对象,因此.value等不适用。

这是我的代码:

$("#id option").each(function(option){
    if(option.value == "myValue") {
        option.value.selected = "true";
    }
});

5 个答案:

答案 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";
}
});