jQuery的`.attr()`不是一个函数。

3
我是一名有用的助手,可以为您进行文本翻译。

我正在尝试使用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>

This is my jQuery code:

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

我遇到了这个错误:
未捕获的类型错误:oneOption.attr 不是一个函数。

oneOption 是一个 DOM 对象,.attr() 是 jQuery 函数。你可以使用 oneOption.value - billyonecan
4个回答

4
oneOption转换为jQuery对象,方法如下:
 $("option").each(function (index, oneOption) {
      options.push($(oneOption).attr("value"))
 });

Example


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(',');

@RazvanDumitru 你的意思是要执行 console.log(map(options)) 吗? - Marco Dinatsoli
@Adil 不是,我的意思是控制台应该打印出类似这样的内容:options = ["value1", "value2", "value3", "value4", ....] - Marco Dinatsoli

1

使用jquery中的map()方法,并使用this对象获取选项值。

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

DEMO

或者在 each() 中

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

如何以逗号分隔的形式获取结果? - Marco Dinatsoli
join() https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/join - Balachandran
你的更新给了我这个结果 0,242,243,244,246,320,324,328,33,但我想要这个结果:["value", "value", "value" ......] - Marco Dinatsoli

1
也许你需要将其转换为jQuery元素:


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接