如何通过编程方式获取Select2初始化时的配置参数
结论
该需求完全可以实现,无需修改原有Select2初始化代码,直接读取元素上存储的Select2实例配置即可拿到目标参数。
具体实现方式
Select2完成初始化后,会将所有传入的配置项挂载到对应<select>DOM元素的jQuery缓存数据中,直接读取对应字段即可:
- 单个Select2元素获取示例:
// 传入目标select的jQuery对象即可,例如下方的$select为你代码中初始化用的obj变量 const instanceData = $select.data('select2'); // 读取完整配置后直接取ajax下的url字段 const ajaxRequestUrl = instanceData.options.options.ajax.url;
- 批量获取页面所有带Ajax数据源的Select2的url:
// 遍历页面所有select元素 $('select').each(function() { const $currentSelect = $(this); // 过滤未初始化Select2、未配置ajax参数的元素 const instance = $currentSelect.data('select2'); if (!instance || !instance.options.options.ajax) return; const targetUrl = instance.options.options.ajax.url; // 此处编写你的业务逻辑,例如打印、存储url console.log('下拉框', this, '绑定的Ajax请求地址为:', targetUrl); });
特殊情况处理
如果你初始化时ajax.url传入的是动态返回地址的函数而非固定字符串,拿到的会是函数本身,需要参照Select2的调用规则执行函数拿到实际请求地址:
let ajaxUrl = instance.options.options.ajax.url; if (typeof ajaxUrl === 'function') { // 按照Select2的参数规则传入对应参数即可获取动态生成的请求地址 ajaxUrl = ajaxUrl($currentSelect.get(0), {}); }
内容的提问来源于stack exchange,提问作者jstuardo
相关产品推荐
相关产品推荐

