用户可以选择一个选项,它将被添加到列表中。
它看起来像这样。
<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;选择?
答案 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>