我正在转换<input type="hidden">为select2下拉列表并通过查询方法提供数据
$('#inputhidden').select2({
query: function( query ) {
query.callback( data ); // the data is in the format select2 expects and all works well..
);
});
Run Code Online (Sandbox Code Playgroud)
问题是我需要破解select2用户界面并在搜索栏顶部放置两个按钮,当点击它们时,将执行ajax调用,并且必须更新select2内容.

现在,我需要完成这些更新,而不是完全重建select2,而只是刷新下拉列表中的项目.我找不到将一组新数据传递给已创建的select2控件的方法,这可能吗?
我正在尝试强制打开方法并选择select2这样的项目.
$(".select").select2('open')
$(".select").on('select2-loaded', function (e) {
items = e.items.results;
if (items.length == 1) {
$(this).val(items[0].text);
}
});
$(".select").select2('close');
Run Code Online (Sandbox Code Playgroud)
但我无法进入select2加载的评估,并且关闭也发生在快速.如果列表中只有一个元素,我想默认选择第一个元素.
当"打开"发生时,它会自动执行机制来获取和加载列表中的所有元素.如果我评论close方法,则需要几毫秒来显示列表中的元素.
但我想要的是刷新我的列表(这是通过打开完成)然后我想只选择是否有一个元素和关闭我的列表('选择')
我怎样才能做到这一点?此行为将由另一个列表的onchange事件触发.(嵌套选择)
我想,如果我选择"哺乳动物",动物选择选项只显示值为1的选项data-animal_class.
我知道如何获得哺乳动物的价值,但我对如何使用过滤器感到困惑
这是我的代码:
$('#class').on('change', function(e) {
e.preventDefault();
var animal = $(this).val();
console.log(animal);
})Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="class">
<option value=""></option>
<option value="1">Mammals</option>
<option value="2">Birds</option>
<option value="3">Reptiles</option>
</select>
<select id="animals">
<option value=""></option>
<option value="11" data-animal_class="1">Cow</option>
<option value="12" data-animal_class="1">Sheep</option>
<option value="13" data-animal_class="1">Bear</option>
<option value="21" data-animal_class="2">Parrot</option>
<option value="22" data-animal_class="2">Pigeons</option>
<option value="23" data-animal_class="2">Bear</option>
<option value="31" data-animal_class="3">Crocodile</option>
<option value="32" data-animal_class="3">Lizard</option>
<option value="33" data-animal_class="3">Turtle</option>
</select>Run Code Online (Sandbox Code Playgroud)