3

我有一个这样定义的选择:

<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 中不起作用

有什么想法或建议吗?

4

1 回答 1

1

Select2 4.0.0 就像标准一样工作<select>,所以这里的问题是:我如何读取data-*属性<option>.

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

您的问题有点宽泛,因此您可能正在寻找如何使用模板函数访问这些属性。所以你的问题是:如何<option>在模板函数中读取 an 的属性?,它有一个 Select2 3.5.x 的答案,它仍然适用于 4.0.0。

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

于 2015-05-16T00:20:44.513 回答