0

我有一个使用 jQuery 编写的简单网格布局。我有一个问题。我想一次只允许一个编辑行。所以我跟踪当前的编辑行并在单击下一个编辑按钮时将其重置。仍然当我下次单击编辑时,它允许我进行编辑。completeEdit 工作正常,因为我也通过传递当前行从取消按钮调用它。

 var currentRowEdit =null;

   $(tableid + ".edit").live('click', function(event) {
            currentRowEdit = $(this).parent().parent();
            editRow(currentRowEdit);
    });


function editRow(row){
        if(currentRowEdit!=null){
            completeEdit(currentRowEdit);               
        }              
           $(row).find(".save").show();
           $(row).find(".cancel").show();
           $(row).find(".edit").hide();

    }

function completeEdit(row){             
         $(row).find(".save").hide();
          $(row).find(".cancel").hide();
         $(row).find(".edit").show();              
    }
4

2 回答 2

1
function completeEdit(row){
   $(row).find(".save").hide();
   $(row).find(".cancel").hide();
   $(row).find(".edit").show();   
   currentRowEdit = null; // reset the currentRowEdit
}

根据评论

您的代码没有隐藏.saveand.cancel按钮。因为,如果您查看代码流,您会注意到,在completeEdit().show()为这些按钮使用方法的函数之后。

结果,您的按钮在completeEdit()完成后隐藏,但在执行其余代码后editRow(),这些按钮再次变为可见。

于 2012-09-13T19:56:32.237 回答
0

我相信您在同一行上调用了 completeEdit 和 editRow 。您应该在上一个上调用 completeEdit,在新上调用 editRow

 var currentRowEdit =null;

   $(tableid + ".edit").live('click', function(event) {
            completeEdit(currentRowEdit);
            currentRowEdit = $(this).parent().parent();
            editRow(currentRowEdit);
    });


function editRow(row){



           $(row).find(".save").show();
           $(row).find(".cancel").show();
           $(row).find(".edit").hide();

    }

function completeEdit(row){
         if(row==null){
           return;

        }
         $(row).find(".save").hide();
          $(row).find(".cancel").hide();
         $(row).find(".edit").show();    

    }
于 2012-09-13T20:01:42.240 回答