我有一个以这种方式定义的选择:
<select class="myselect">
<option value="AL" data-foo="bar">Alabama</option>
...
<option value="WY" data-foo="biz">Wyoming</option>
</select>
在早期版本的Select2中,我可以轻松地检索数据值,如下所示:
alert($("#" + controlid).select2().find(":selected").data('foo'));
然而,这在Select 2 4.0
中不起作用有任何想法或建议吗?
答案 0 :(得分:1)
Select2 4.0.0就像标准<select>
一样,所以这里的问题是:How do I read data-*
attributes on an <option>
?。
现在,如果您只是想从已经可以检索的选项中获取数据属性,那么该问题中的答案应该按原样运行。重要的是要注意Select2不直接设置selected
属性,它设置selected
属性,因此您必须使用:selected
选择器而不是{{ 1}}如果你想获得所选的选项。
您的问题有点广泛,因此您可能正在寻找如何使用模板功能访问这些属性。所以你的问题是:How do I read the attributes of an <option>
in the templating functions?,它有一个Select2 3.5.x的答案,它仍然适用于4.0.0。
模板化函数的第一个参数应该是数据对象。假设您没有使用AJAX(因为[selected]
不存在),数据对象具有属性<option>
,它是数据对象表示的DOM元素。您可以通过执行element
来获取数据属性,就像使用任何其他元素一样。