从 Select2 4.0 读取 HTML5 数据属性

Reading HTML5 Data- Attributes from Select2 4.0

我有一个 select 是这样定义的:

<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> 一样工作,所以这里的问题是:How do I read data-* attributes on an <option>?.

现在,如果您只是想从您已经可以检索的选项中获取数据属性,那么该问题的答案应该按原样工作。需要注意的是Select2并没有直接设置selected属性,它设置的是selected属性,所以必须使用:selected选择器而不是[selected] ] 如果你想得到选择的选项。

您的问题有点宽泛,因此您可能正在寻找如何使用模板函数访问这些属性。所以你的问题是:How do I read the attributes of an <option> in the templating functions?,它有 Select2 3.5.x 的答案,它在 4.0.0.

中仍然有效

模板函数的第一个参数应该是数据对象。数据对象,假设你没有使用 AJAX(因为那里不存在 <option>),有一个 属性 element 是 DOM 元素数据对象代表的。您可以通过执行 $(data.element).data("myAttribute") 从这些元素中获取数据属性,就像您对任何其他元素所做的那样。