使用jQuery multiselect 与ajax做多选下拉框时 multiselect('refresh')刷新后变成disable

Scott的博客 2016-12-23 08:57:04
使用jQuery multiselect 实现多选下拉列表,optionajax中拼接出来的,在没有加上$172("#dropboxMultiselect").multiselect('refresh');刷新时可以显示,但是ajax中拼接出来的option无法获取到。看了官方文档,里面说:假如你是通过 AJAX 或者 DOM 来手动添加或者删除 option 选项,可以通过 refresh 方法来重新加载 Multiple Select。但是但我加上刷新时,select下拉框变灰色没法用了,因为使用了两个版本的jQuery,所以做了以下操作:
<script type="text/javascript" src="js/jquery.1.7.2.min.js"></script>
<script> var $172 = $; </script>

做了以上的 $ 符号的操作后,刷新报错:
jquery.1.7.2.min.js:2 Uncaught Error: cannot call methods on multiselect prior to initialization; attempted to call method 'refresh'
e.extend.error @ jquery.1.7.2.min.js:2
(anonymous function) @ jquery-ui.min.js:5
e.extend.each @ jquery.1.7.2.min.js:2
e.fn.e.each @ jquery.1.7.2.min.js:2
t.fn.(anonymous function) @ jquery-ui.min.js:5
StorageList @ bind.js:1582
initDeviceSysContent @ bind.js:1662
globeRoute @ bind.js:1892
(anonymous function) @ bind.js:10
f.event.dispatch @ jquery.1.7.2.min.js:3
h.handle.i @ jquery.1.7.2.min.js:3

菜鸟第一次使用 jQuery multiselect 插件,恳请前辈们大虾们帮忙看看,我如何才能在ajax拼接option的条件下实现多选下拉框,函数如下:
-----------------------------------------------------------------------------------
function StorageList(){
storageList.html("").append("<option value=''>"+'仓库列表'+"</option>").append("<option value='1'>"+'暂无绑定仓库'+"</option>");
var li;
$.ajax({
type: "POST",
url: "ActionGetStorageList",
success: function(data){
var list = $(data).find("result").text();
var pk = $(data).find("pk").text();
var value =$(data).find("value").text;
if(list !="fail" && list !="error" && pk != "" && value != ""){
$(data).find("item").each(function(i,e){

var Pk = $(e).find("pk").text();
var value = $(e).find("value").text();
var option = $('<option value="'+Pk+'">'+value+'</option>');
storageList.append(option);
li = $("<option />", {
value: Pk,
text: value
});
});
}else{
alert("暂无仓库列表");//获取仓库列表失败
}
},
error: function(){
//异常处理;
}
})
//Start by wgs 多选下拉框
$172("#Depot_name").multiselect({
multiple: true,
header: false,
height: 200,
minWidth: 200,
selectedList: 10,//预设值最多显示10被选中项
hide: ["explode", 500],
noneSelectedText: '蚬涌总仓',
close: function(){
var values= $172("#Depot_name").val();
$172("#hfexample").val(values);
}
});
$172("#dropboxMultiselect").multiselect('refresh');
//End by wgs 2016-12-23 20:25:59
}


现在效果如下图所示:


...全文
725 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Go 旅城通票 2016-12-24
  • 打赏
  • 举报
回复
引用 2 楼 wgs_93 的回复:
[quote=引用 1 楼 showbo 的回复:] 你导入2个juqery干嘛?这个插件应该传入的是最后一个jquery框架,$172这别名是最后一个jquery的没有?
$172是最后一个jQuery,因为版本的问题,我不知道是否会冲突,所以加了别名,额,我刚刚试了,只用前一个jQuery也可以[/quote]最好不要导入多个jquery,要不有些类库会冲突的。。。你去掉其中一个看包不报错就知道了,报错了一般是使用了新api或者被放弃的了旧api,如live,on之类的,都可以改为bind来绑定事件
Scott的博客 2016-12-24
  • 打赏
  • 举报
回复
参考博客:http://blog.csdn.net/taotoxht/article/details/41114131问题解决
Scott的博客 2016-12-24
  • 打赏
  • 举报
回复
引用 3 楼 showbo 的回复:
[quote=引用 2 楼 wgs_93 的回复:] [quote=引用 1 楼 showbo 的回复:] 你导入2个juqery干嘛?这个插件应该传入的是最后一个jquery框架,$172这别名是最后一个jquery的没有?
$172是最后一个jQuery,因为版本的问题,我不知道是否会冲突,所以加了别名,额,我刚刚试了,只用前一个jQuery也可以[/quote]最好不要导入多个jquery,要不有些类库会冲突的。。。你去掉其中一个看包不报错就知道了,报错了一般是使用了新api或者被放弃的了旧api,如live,on之类的,都可以改为bind来绑定事件[/quote] 好的,谢谢你的解答。问题已解决
Scott的博客 2016-12-23
  • 打赏
  • 举报
回复
引用 1 楼 showbo 的回复:
你导入2个juqery干嘛?这个插件应该传入的是最后一个jquery框架,$172这别名是最后一个jquery的没有?
$172是最后一个jQuery,因为版本的问题,我不知道是否会冲突,所以加了别名,额,我刚刚试了,只用前一个jQuery也可以
Go 旅城通票 2016-12-23
  • 打赏
  • 举报
回复
你导入2个juqery干嘛?这个插件应该传入的是最后一个jquery框架,$172这别名是最后一个jquery的没有?

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧