我正在使用 bootstrap select2 来提供可搜索的下拉菜单。数据是动态填充的。我想在所有 li 元素上都有一个自定义属性:
$('#myselect').select2({
data: myDataArray
});
这完美地工作并呈现以下html:
<ul class="select2-results__options" role="tree" id="select2-myselect-results" aria-expanded="true" aria-hidden="false">
<li class="select2-results__option" role="treeitem" aria-selected="false">item1</li>
<li class="select2-results__option" role="treeitem" aria-selected="false">item2</li>
<!-- etc, total of 77 items listed -->
</ul>
在所有列表元素上,我想要一个属性。所以我想通了,当元素已经渲染时,我必须捕捉'select2:open'事件,然后使用jquery应用属性说:
$("#myselect").on("select2:open", function () {
console.log('open');
var liElements = $('#select2-myselect-results li');
console.log(liElements.length);
liElements.attr('data-mydata', 'mydataa');
});
事件正确触发。控制台显示首次打开:
open 1
控制台显示第二次打开,jquery 选择器似乎也在工作:(但为什么只有 2 次......?,无论如何)
open 77
li
在这两种情况下元素都没有属性的主要问题data-mydata
是我的目标。
附带的问题是为什么第一个 open 只有一个元素(即使是零也会更有意义......)
控制台上没有错误消息