Select2-打开下拉列表后形成下拉列表时需要一个事件
Select2 - need a event when drop down list is formed after opening the dropdown
我正在使用select2jquery插件
我正在使用open
事件
var select2 = $('select').select2();
select2.on("select2:open", () => {
// I want to do some code here with $('.select2-results__option')
//$('.select2-results__option').size() is not equal to actual elements
});
当我们单击下拉菜单时,会触发此事件。但是我没有得到这个事件中的下拉元素。
我有2000个下拉元素。但在公开赛中我不明白。是否有任何事件可以检测下拉列表是否已填充。
当我试图在打开后删除项目时,也遇到了类似的问题。
您可以使用异步函数来检查列表是否完整:
select2.on("open", function (e) {
asyncCheck();
});
async asyncCheck() {
// Waiting for 0 milliseconds was enough for me, maybe you need to increase the value
await new Promise(resolve => window.setTimeout(resolve, 0));
// Here comes your check, if list is completly populated ...
}
但请注意,此将不适用于IE 11,因为IE 11中不支持异步和Promise(请参阅我可以使用中的Promises和异步功能
我的IE 11解决方法如下:
$(document).ready(checkContinuously());
function checkContinuously() {
// Do your check here
setTimeout(checkContinuouslyForNullOption, 100);
}
但是is有一个明显的缺点,就是总是执行检查,并且理论上可能会导致堆栈溢出,因为它使用递归。
尝试捕获select2本身(而非DOM)的"results:all"事件。
这里来自Select2.prototype.registerEvents:
this.on('query', function (params) {
if (!self.isOpen()) {
self.trigger('open', {});
}
this.dataAdapter.query(params, function (data) {
self.trigger('results:all', {
data: data,
query: params
});
});
});
正如我们所看到的,open是在查询dataAdapter之前触发的,这是因为在它的处理程序I guest中没有选项。
select2.on("results:all", function (args) { console.log(args.data);});
查找是否有选项的一种方法是CCD_ 2,它提供了选项的数量。
Fiddle Here
相关文章:
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 如何在用户返回和上一个按钮时刷新下拉列表
- 如何为下拉列表的每个选项添加一个属性
- 在Twitter BootStrap嵌套下拉列表中托管一个选择列表(IE 9特定)
- 如何使用jquery将所选项目从一个下拉组列表(optgroup)移动到另一个下拉列表(optgroup)
- 如何强制用户从下拉列表和按钮中选择一个值以启用保存按钮
- 在另一个下拉列表中的选择上切换下拉列表中选项的可见性
- 将onclick事件附加到具有一个元素的下拉列表中
- 引导程序在单击另一个下拉列表时关闭下拉列表
- 如何通过选择下拉列表中的选项从另一个 php 文件中获取数据
- 如何只制作一个下拉列表在单击时下拉
- 通过硒选择一个javascript下拉列表
- 如何在 PHP 中使用 OnChange 事件的下拉列表中选择一个选项后,对大量数据行设置分页
- 如何使用 asp.net 中的另一个下拉列表更改下拉列表选定的索引和可见性
- jQuery - 根据属性在所选选项之后的下拉列表中获取下一个选项的总值
- 如何填充下拉列表,从javascript中的另一个下拉列表中排除任何一个选项
- 选择“第一个下拉列表”以与另一个下拉列表的值相同
- 我创建了一个下拉列表,以及如何显示所选项目的其他列数据
- 导航到另一个页面后,bootstrap下拉列表将不可用
- 使用jquery如何自动删除下拉列表中的第一个空白选项(如果它依赖于另一个选项)