虽然不太明白为什么refresh方法不起作用,不过还有另外一个方法:
// data 是ajax返回的json数据
$.get("xxx.html?a=" + a, function (data) {
var site = new Array();
$.each(data, function(index, values) {
//循环将data数据的结构重新调整为下面这样的:[{label:xxx,value:id}]
// laebl相当于option的文字,value则是option的value,结构不能错
site.push({
label : values.site_name,
value : values.id
});
});
//重点是这里,不用refresh方法,用下面这个。
$("#site_id").multiselect('dataprovider',site);
});
如果你在查询数据库的时候直接就这样:
select id as value, city_name as label from 表名
那么返回值在js那里就不需要循环改变结构了,直接可以用:
$("#site_id").multiselect('dataprovider',data);
你可以在select控件的子节点上面绑定一个click的事件,
var optStr =“”;
//比如子节点是一个div
$("#select").find("div").click(function(){
//每次单击都获取选定值的数组 并拼接成逗号分割的字符串
// 这样就不用每次都判断 选中或者取消的值是否在原字符串当中
optStr = $.map($("#select").find("checkbox:checked").val(), function) { return $(this).val(); }).get().join(",");
});
只是对你提的问题给一个大概的思路,希望对你有帮助,不懂的地方可以追问。望采纳...
用jquery将对方取到,然后用add方法,将所添加的元素和值,添加到复选框里
$("select option").add("");
看源码,有个refresh方法,每次动态将select里的option跟换,然后调用refresh就ok