将每个选项转换为我使用"相同的对象:选择"选择

时间:2018-04-04 14:15:59

标签: javascript jquery html

用户可以选择一个选项,它将被添加到列表中。

它看起来像这样。

<select id="dropdownlist">
<optgroup label="Group1">
    <option value="abc" data-id="11" data-isXX="true" >Text1</option>
    <option value="def" data-id="12" data-isXX="false" >Text2</option>
</optgroup>
<optgroup label="Group2">
    <option value="ghi" data-id="13" data-isXX="true">Text3</option>
</optgroup>
</select>

我需要每个选项的数据属性。这在列表之间有所不同,所以我不能直接查询它们,我总是需要所有这些。

这非常有效,因为我使用&#34;:select&#34;选择器,然后使用&#34; .data()&#34;。

简单地获取所有数据属性

我想要一个允许用户一次添加所有选项的功能。 如果我现在调用所有选项,则没有&#34; data()&#34;函数,因为与选定的选择器不同,它不返回jQuery对象。

我想制作一个&#34;每个&#34;循环,我只是将每个选项传递给我现有的函数,一切都将像以前一样完成。

这就是我的想象:

$("#dropdownlist option").each(function (i, o) {
        var convertedOption = o.ConvertTo
        myfunction(convertedOption);

    })

有没有办法将每个选项转换为我使用&#34;相同的对象:select&#34;选择?

1 个答案:

答案 0 :(得分:0)

将各个元素包装到jQuery对象中,data()将起作用:

let dataAttrs = [];
$("#dropdownlist option").each((i,o)=>{
  dataAttrs.push($(o).data());
})
console.log(dataAttrs);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="dropdownlist">
<optgroup label="Group1">
    <option value="abc" data-id="11" data-isXX="true" >Text1</option>
    <option value="def" data-id="12" data-isXX="false" >Text2</option>
</optgroup>
<optgroup label="Group2">
    <option value="ghi" data-id="13" data-isXX="true">Text3</option>
</optgroup>
  </select>