在上述代码实现中,存在的问题:
当⼀个
“
已停⽤
”
状态的菜单,点击
“
启⽤
”
按钮启⽤后,再次点击
“
停⽤
”
按钮⽆法停⽤
当⼀个
“
已启⽤
”
状态的菜单,点击
“
停⽤
”
按钮停⽤后,再次点击
“
启⽤
”
按钮⽆法启⽤
问题分析:
menuCode
是字符串类型,当我们使⽤
JS
代码拼接
“
停⽤
”/“
启⽤
”
按钮时,要指定按钮点击
事件触发
JS
⽅法,通过要将
menuCode
传递到⽅法中,
menuCode
没有添加
''
,
导致
menuCode
不能传递到
JS
函数中
解决⽅案:
启⽤菜单的
JS
⽅法中
member_start()
![](https://i-blog.csdnimg.cn/blog_migrate/31f73d1eeb51e2239e7e6a246973b75d.png)
停⽤菜单的
JS
⽅法中
member_stop()
![](https://i-blog.csdnimg.cn/blog_migrate/188d0be7f3116b9cb509de70e2286f7c.png)
/*菜单-停用*/
function member_stop(obj,id){
//1.提示确认是否要停用
layer.confirm('确认要停用吗?',function(index){
//发送ajax请求,MenuStateChangeServlet,将当前菜单停用掉。
$.post("MenuStateChangeServlet",{menuCode:id,oper:"stop"},function (res) {
if (res.code == 1000){
//2.将按钮状态修改为启用状态
$(obj).parents("tr").find(".td-manage").prepend('<a style="text-decoration:none" class="btn btn-xs " onClick="member_start(this,\''+id+'\')" href="javascript:;" title="启用"><i class="fa fa-close bigger-120"></i></a>');
//3.将菜单显示的状态修改为已停用
$(obj).parents("tr").find(".td-status").html('<span class="label label-defaunt radius">已停用</span>');
//移除当前按钮
$(obj).remove();
//弹窗显示操作成功!
layer.msg('已停用!',{icon: 5,time:1000});
} else if (res.code == 1001) {
layer.msg('停用操作失败!',{icon:5,time:1000})
}
},"json")
});
}
/*菜单-启用*/
function member_start(obj,id){
layer.confirm('确认要启用吗?',function(index){
$.post("MenuStateChangeServlet",{menuCode:id,oper:"start"},function (res) {
if (res.code == 1000) {
$(obj).parents("tr").find(".td-manage").prepend('<a style="text-decoration:none" class="btn btn-xs btn-success" onClick="member_stop(this,\''+id+'\')" href="javascript:;" title="停用"><i class="fa fa-check bigger-120"></i></a>');
$(obj).parents("tr").find(".td-status").html('<span class="label label-success radius">已启用</span>');
$(obj).remove();
layer.msg('已启用!',{icon: 6,time:1000});
}else if (res.code ==1001) {
layer.msg('启用失败!',{icon: 6,time:1000});
}
},"json");
});
}
更改后效果
因为传递过来的menuCode是字符串类型的,所以需要用转义字符\和单引号'把传过来的数值引起来,中间再加一层单引号是因为id是变量。
\''+id+'\'
这样就可以连续自由的进行启用和停用了