关于JS,在for循环里使用switch产生的有关问题(easyui)
关于JS,在for循环里使用switch产生的问题(easyui)
先解释一下上面代码的功能:
$("#dg").datagrid("addToolbarItem",[{text:按钮名称,iconCls:按钮图标,handler:点击按钮的事件}]);
通过异步获取数据库的信息,然后通过该方法动态添加datagrid表格的按钮。

出现的问题:
问题就出现【handler】点击事件上面,当上面代码执行后,产生的所有按钮的点击事件都是循环时最后一个事件,也就是说假如循环到最后一个删除按钮,它的事件应该是alert("删除"),但是循环完毕后,所有按钮的事件都是alert("删除"),用断点跟踪了一下,就是最后一次执行后,覆盖了曾经全部的事件。
其实我想实现的功能就是动态的添加datagrid表格的按钮。
------解决方案--------------------
$.post("/EasyUI/actionInfo", {}, function (data) {
for (var i = 0; i < data.length; i++) {
{
var item = data[i];
$("#dg").datagrid("addToolbarItem", [{ "text": item.ActionName, "iconCls": item.Icons, "handler": function () {
switch (item.ActionName) {
case '添加': alert("添加");
break;
case '修改': alert("修改");
break;
case '删除': alert("删除");
break;
default: alert("ddd");
}
}
}, "-"]);
}
}
})
先解释一下上面代码的功能:
$("#dg").datagrid("addToolbarItem",[{text:按钮名称,iconCls:按钮图标,handler:点击按钮的事件}]);
通过异步获取数据库的信息,然后通过该方法动态添加datagrid表格的按钮。
出现的问题:
问题就出现【handler】点击事件上面,当上面代码执行后,产生的所有按钮的点击事件都是循环时最后一个事件,也就是说假如循环到最后一个删除按钮,它的事件应该是alert("删除"),但是循环完毕后,所有按钮的事件都是alert("删除"),用断点跟踪了一下,就是最后一次执行后,覆盖了曾经全部的事件。
其实我想实现的功能就是动态的添加datagrid表格的按钮。
easyui
jquery
javascript
ajax
------解决方案--------------------
for (var i = 0; i < data.length; i++) {
(function(item){
$("#dg").datagrid("addToolbarItem", [{ "text": item.ActionName, "iconCls": item.Icons, "handler": function () {
switch (item.ActionName) {