出现点击一次按钮,提交多次数据的情况,第1次正常,第2次提交2次,第3次3次..........

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(){