jQuery` .attr()`不是函数

时间:2015-06-18 10:52:50

标签: javascript jquery

我正在尝试使用jQuery获取特定选项标记的值。

这是我的HTML:

<select name="modele" class="wyszselect" onchange="przenies(this[this.selectedIndex].value);">
   <option value="0">Choose model</option>
   <option value="242">242</option>
   <option value="243">243</option>
   <option value="244">244</option>
   <option value="246">246</option>
   <option value="320">320</option>
   <option value="324">324</option>
   <option value="328">328</option>
   <option value="33">33</option>
</select>

这是我的jQuery代码:

$(document).ready(function () {
    var options = [];
    $("option").each(function (index, oneOption) {
          options.push(oneOption.attr("value"))
    });
    console.log(options);
});

我收到了这个错误:

  

未捕获的TypeError:oneOption.attr不是函数

4 个答案:

答案 0 :(得分:3)

Conver oneOptionjQuery对象,就像这样

 $("option").each(function (index, oneOption) {
      options.push($(oneOption).attr("value"))
 });

Example

答案 1 :(得分:3)

每个函数都将传递DOM对象而不是jQuery对象。转换为jQuery对象或使用DOM对象,如options.push(oneOption.value),这将更快,然后将DOM对象转换为jQuery对象,然后调用attr来获取值。您也可以使用this.value

$("option").each(function (index, oneOption) {
      //options.push($(oneOption).attr("value"));       
      options.push(oneOption.value);
      //options.push(this.value);
});

获取逗号分隔值

$("option").map(function(){
   return this.value;
}).get().join(',');

答案 2 :(得分:1)

在jquery()中使用map(),并使用对象获取选项值

options = $("option").map(function (index, oneOption) {
    return this.value;
}).get().join(',');

<强> DEMO

或每个()

options =[];
$("option").each(function (index, oneOption) {
        options.push(this.value);
})

答案 3 :(得分:0)

您需要转换为jQuery元素。

$("option").each(function (index, oneOption) {
      options.push($(oneOption).attr("value"))
 });