如何使用jQuery通过id动态分配Select2的值
问题的原因是需要通过动态的id来给Select2赋值。解决方法有两种。
第一种方法是通过选择指定id的元素并触发change事件来设置"All Folders"选项。具体代码如下:
var data = [{ "id": 9050020, "text": "Selected Folders", "keyword": "S" }, { "id": 9050021, "text": "All Folders", "keyword": "A" }]; var $select = $('#foldertype').select2({ data: data }); var found = data.find(function(entry) { return entry.keyword === 'A' }); if (found) { $select.val(found.id).trigger('change'); }
这段代码先定义了一个包含选项数据的数组data,然后使用该数据初始化select2插件。接着通过查找数组data中keyword为'A'的元素,找到了"All Folders"选项的id值,并将其赋值给$select,最后触发change事件。
第二种方法是使用jQuery插件来实现。具体代码如下:
(function($) { $.fn.setSelection = function(value, isText) { var oldVal = this.val(); if (isText) { this.find('option').filter(function() { return $(this).text() === value.trim(); }).prop('selected', true); } else { this.val(value); } if (this.val() !== oldVal) { this.trigger('change'); } return this; } })(jQuery); const data = [ { "id": 9050020 , "text": "Selected Folders" , "keyword": "S" }, { "id": 9050021 , "text": "All Folders" , "keyword": "A" } ]; $('#foldertype').select2({ data }).setSelection('All Folders', true);
这段代码定义了一个名为setSelection的jQuery插件函数,通过该函数可以设置Select2的选中值。然后定义了一个包含选项数据的数组data,并使用该数据初始化select2插件。最后调用setSelection函数,将"All Folders"设置为选中状态。
以上是解决问题的两种方法,可以根据具体情况选择适合的方法来给Select2赋值。