jquery 多选重新加载
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/8653301/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
jquery multiselect reload
提问by Robin Michael Poothurai
How can I add or remove options in JQuery UI Multiselect? I am initializing the multiselect on page load and I need to remove existing values and add new values based on another selection. I am initializing the multiselect on page load using:
如何在JQuery UI Multiselect 中添加或删除选项?我正在页面加载时初始化多选,我需要删除现有值并根据另一个选择添加新值。我正在使用以下方法在页面加载时初始化多选:
$("#multipleselectboxId").multiselect();
After that, I am adding values to the multiple drop down using jQuery append()and remove()methods which are working fine with original dropdown but in the multiselect are not getting reflected.
之后,我使用 jQueryappend()和remove()方法向多个下拉列表添加值,这些方法在原始下拉列表中工作正常,但在多选中没有得到反映。
Can anyone help with this?
有人能帮忙吗?
回答by Brandon Joyce
For that one you could just destroy and reinitialize after changing...
对于那个,您可以在更改后销毁并重新初始化...
$("#multipleselectboxId").append(toAppend).multiselect("destroy").multiselect();
There's also another plugin with a refresh function: EricHynds's Multiselect
还有另一个具有刷新功能的插件:EricHynds 的 Multiselect
$("#multipleselectboxId").append(toAppend).multiselect("refresh");
回答by Robin Michael Poothurai
I found the solution for this, first destroy the multiselect and reInitialize it, Thanks for @ Brandon Joyce,
我找到了解决方案,首先销毁多选并重新初始化它,感谢@ Brandon Joyce,
solutions for this is
对此的解决方案是
$("#multipleselectboxId").append(toAppend);
$("#multipleselectboxId").remove(toRemove);
$("#multipleselectboxId").multiselect('destroy');
$("#multipleselectboxId").multiselect();
回答by Andrej Gaspar
I was trying to rebuild multiselect by .multiselect("destroy")and .multiselect(), but it wasnt working, so finally I find this solution worked for me.
我试图通过.multiselect("destroy")and重建多选.multiselect(),但它不起作用,所以最后我发现这个解决方案对我有用。
$.each(jsonArray, function(i, val) {
$('#frmarticles-f_category_id').append('<option value="'+i+'">'+val+'</option>').multiselect('rebuild');
});
回答by Vinit
Thank you this helped. I was using multiselect UI widget and this is what worked
谢谢这有帮助。我正在使用多选 UI 小部件,这就是有效的
jQuery("select[title='" + FieldNameTitleText + "']").append( "<option value='" + OptionValue+ "'>" + OptionText + "</option>" ).multiselect("refresh");
回答by user2139254
In my case, I just wanted to replace all previous content of multiselect with new.
就我而言,我只想用 new 替换多选的所有先前内容。
This worked for me:
这对我有用:
$('#multiselect_id').html(newHtml);
$('#multiselect_id').multiselect('refresh');
回答by UncaAlby
Here is what I did:; it may be more than necessary, but it worked for me.
这是我所做的:; 这可能是不必要的,但它对我有用。
Original "select" code that requires modification:
需要修改的原始“选择”代码:
<select id="MySelect" name="selection">
<option value="1">One</option>
<option value="2">Two</option>
</select>
I rebuild the option list in PHP, send it to the JavaScript via JSON, and construct/store the new list in a variable. E.g.:
我在 PHP 中重建选项列表,通过 JSON 将其发送到 JavaScript,然后在变量中构造/存储新列表。例如:
// this is similar to if we got it from PHP
var newList = '<option value="A">Alpha</option>
<option value="B">Beta</option>
<option value="C">Gamma</option>';
Now, to switch this around in the jQuery UI Multiselect widget:
现在,要在 jQuery UI Multiselect 小部件中进行切换:
$('#MySelect').html(''); // clear out old list
$('#MySelect').multiselect('destroy'); // tell widget to clear itself
$('#MySelect').html(newList); // add in the new list
$('#MySelect').multiselect(); // re-initialize the widget
In particular, I re-initialized it with parameters, e.g.:
特别是,我用参数重新初始化了它,例如:
$('#MySelect').multiselect({selectedList: 4, header: false});
If anybody has read this far down and is still having troubles, give this a try.
如果有人读了这么远但仍然遇到问题,请试一试。
回答by Yoong Kim
well this plugin works fine but I have a pb with destroy and filter: my combo data are loaded with ajax. So, when I refresh the data with ajax call, I call destroy to refresh the plugin:
这个插件很好用,但我有一个带销毁和过滤器的 pb:我的组合数据是用 ajax 加载的。所以,当我用ajax调用刷新数据时,我调用destroy来刷新插件:
myCombo.multiselect('destroy');
myCombo.multiselect().multiselectfilter();
It works for the first call: empty combo, ajax call to load data, call the functions above. But if I refresh the combo data and call again the above functions, the filter disappeared? Someone experienced this pb before and found a solution?
它适用于第一次调用:空组合,ajax 调用加载数据,调用上面的函数。但是如果我刷新组合数据并再次调用上述函数,过滤器消失了?之前有人经历过这个pb并找到了解决方案?
回答by Ercan
I used it in this way :
我以这种方式使用它:
$("#<%= cmbInBayiID.ClientID %>").multiselect().trigger('reset');
It worked.
有效。
回答by Mykola Mykolayovich Dolynskyi
对于文之心 MultiSelect:
var i = jQuery('input');
i.data('multipleSelect').$parent.remove();
i.removeData('multipleSelect');
i.show();
回答by Anderson Petry
function setMultiSelect(idElement, paramVal){
eval("$('#"+idElement+"').multiselect('uncheckAll')");
$.each($('input[name="multiselect_'+idElement+'"]'), function(k,i) {
if(paramVal.indexOf(this.value)!=-1){
this.checked = true;
}
});
eval("$('#"+idElement+"').multiselect('update')");
}

