我正在转换< input type =“hidden”>到select2下拉列表并通过查询方法向其提供数据
$('#inputhidden').select2({ query: function( query ) { query.callback( data ); // the data is in the format select2 expects and all works well.. ); });
问题是我需要破解select2 UI和位于搜索栏顶部的两个按钮,当点击时,将执行ajax调用,并将必须更新select2内容。
现在,我需要这些更新,而不完全重建select2,而只是刷新下拉列表中的项目。我找不到一种方法来传递一组新的数据到已经创建的select2控件,是可能吗?
解决方法
如果你有局部数组的选项(收到通过ajax调用),我想你应该使用数据参数作为函数返回结果的选择框:
var pills = [{id:0,text: "red"},{id:1,text: "blue"}]; $('#selectpill').select2({ placeholder: "Select a pill",data: function() { return {results: pills}; } }); $('#uppercase').click(function() { $.each(pills,function(idx,val) { pills[idx].text = val.text.toUpperCase(); }); }); $('#newresults').click(function() { pills = [{id:0,text: "white"},text: "black"}]; });
FIDDLE:http://jsfiddle.net/RVnfn/2/
如果你使用按钮自定义select2接口,只需调用updateResults(这个方法不允许从select2对象的外部调用,但你可以添加到select2中的allowedMethods数组,如果你需要)方法在更新数据数组后(例如, 。