我有一个这样定义的选择:
<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
中不起作用有什么想法或建议吗?
Select2 4.0.0就像标准的<select>
一样工作,所以这里的问题是:我如何读取<option>
上的data-*
属性?
现在,如果您只是希望从已经可以检索的选项中获取数据属性,那么该问题的答案应该按原样工作。重要的是要注意,Select2不直接设置selected
属性,它设置selected
属性,所以如果你想获得选择的选项,你必须使用:selected
选择器而不是[selected]
。
您的问题有点宽泛,因此您可能正在寻找如何使用模板函数访问这些属性。所以你的问题是:我如何在模板函数中读取<option>
的属性?,它对Select2 3.5有一个答案。
模板函数的第一个参数应该是数据对象。假设不使用AJAX(因为不存在<option>
),数据对象有一个属性element
,它是数据对象表示的DOM元素。您可以通过执行$(data.element).data("myAttribute")
来获取数据属性,就像处理任何其他元素一样。