function add(){
$('#winAdd').window('open'); // 打开增加窗体
$("#btnAdd").click(function(){
var status = $('#statusAdd').combobox('getValue'); //状态
var menuAdd =$('#menuAdd').combobox('getValue'); //父菜单
if(menuAdd=="添加为父菜单"){
menuAdd="0";
}
$.ajax({
url:"addMenuAction",
data:{
"m.mid":$("#idAdd").val(),
"m.mname":$("#nameAdd").val(),
"m.mhref":$("#mhref").val(),
"m.mpid":menuAdd,
"m.mstatus":status
},
type:"POST",
success:function(result){
$.messager.show({
title:result,
msg:'消息将在5秒后关闭。',
timeout:5000,
showType:'slide'
});
//关闭修改窗口
$('#winAdd').window('close');
$("#bg").datagrid('reload');
},
error:function(){
$.messager.alert('警告','操作错误');
}
});
});
}
<a id="btnAdd" href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-ok'">新增</a>
以前用ExtJS时也出现过类似的问题,jQuery的出现这个问题的原理可能跟Ext差不多,毕竟都是对js的封装。window这个对象在浏览器的缓存中存储位置跟其他对象存储位置不一样,当你关闭一个window时,其他对象资源占用的空间释放了,但是window占用的空间并没有释放,所以在第二次创建一个window时,加上原来那一个就变成了两个所以同一个提交动作就会提交两次,这样创建n个window就会提交n次。解决办法就是手动的释放window对象,例如将其设置为null等,jQuery不太熟,希望有所帮助
很简单 ,原因是你每次执行add方法时 ,都给btnAdd绑定了一个 click事件。
解决方式如下两种方式
1,每次执行add时先$('#btnAdd').unbind('click');解绑原有的click事件。
2,把绑定的事件放在$(function(){})中加载完成只绑一次
一楼说的对,先解绑后绑定,把click换成bind
$("#btnAdd").unbind('click').click(function(){