动态加载数组至Select2失败,请求排查操作问题
问题原因及修复方案
你的代码核心问题是初始化Select2的时机错误——你还没把创建好的<select>元素添加到DOM中,就用jQuery选择器$('#inputDow')尝试初始化Select2,此时jQuery找不到目标元素,自然无法加载数据。
另外还有两个细节可以优化:
- 无需手动给元素添加
select2类,Select2初始化时会自动添加该类 - 基于已创建的DOM对象直接初始化Select2,比通过ID选择器更高效,还能避免ID冲突
修复后的完整代码
var dsDow = [ { id: "0", text: "Sun" }, { id: "1", text: "Mon" }, { id: "2", text: "Tue" }, { id: "3", text: "Wed" }, { id: "4", text: "Thu" }, { id: "5", text: "Fri" }, { id: "6", text: "Sat" } ]; var inputDow = document.createElement("select"); inputDow.classList.add('form-select'); inputDow.setAttribute('id', 'inputDow'); inputDow.setAttribute('name', 'inputDow'); inputDow.setAttribute('tabindex', '1'); inputDow.setAttribute('multiple', 'multiple'); inputDow.setAttribute('required', 'true'); // 先将元素插入DOM树 action_container.appendChild(inputDow); // 再初始化Select2,也可直接用$(inputDow)替代ID选择器 $('#inputDow').select2({ data: dsDow, tags: true, placeholder: "Select Days", escapeMarkup: function (markup) { return markup; } });
核心修复要点
- 调整执行顺序:必须先把元素添加到DOM,再调用
select2()进行初始化 - 可选优化:使用
$(inputDow).select2(...)直接基于创建好的DOM对象初始化,省略ID查找步骤
内容的提问来源于stack exchange,提问作者Don2
相关产品推荐
相关产品推荐

