<tr>
                                <td>
                                   <div id="show">
                                 <%#Eval("titlename") %>
                                    
                                </div>
                                <div id="edit" class="tab-block">
                                   <asp:HiddenField ID="hd_titleId" Value='<%#Eval("titleid") %>' runat="server" />
                                    <asp:TextBox ID="txt_NewTitleName" MaxLength="30" Text='<%#Eval("titlename") %>' runat="server"></asp:TextBox>
                                    <button id="btn_save" type="button">保存</button><button id="btn_canel" type="button">取消</button>
                                </div>
                                </td>
                                <td>
                                    <p class="oper">
                                        <a class="update">修改</a>|<asp:LinkButton ID="lbtn_delete" CommandArgument='<%#Eval("titleid") %>' OnClientClick="return confirm('确认删除?');" CommandName="Delete" CssClass="del" runat="server">删除</asp:LinkButton></p>
                                </td>
                            </tr>
$(document).ready(function (){  $(".update").click(function (){
    var parent = $(this).parent().parent().parent();
    var detail =  parent.find("#show");
    var edit = parent.find("#edit");
    detail.hide();
    edit.show();
    edit.find("#btn_canel").click(function (){
         detail.show();
         edit.hide();
          });
    
    edit.find("#btn_save").click(function (){
    
    var titleId = edit.find("input[type=hidden]").val();
    //alert(titleId);
    var titleName = edit.find("input[type=text]").val();
    if(titleName.length==0 ||titleName.length>30){
      alert("环节名称输入不合法");
      return false;
    }else{
    
     $.ajax({
        type : "POST",
        url : "GoodsExTitle.aspx/Update",
        data : "{'titleId':'"+titleId+"','titleName':'"+titleName+"'}",
        dataType : "json",
        contentType : "application/json;charset=utf-8",
        success : function(msg)
        {
          if(msg.d=="1"){
           alert("修改成功");
          }else if(msg.d=="0"){
           alert("修改失败");
          }
        },
        error:function (){
        alert("数据更新失败");
        }
     
     });
    
    detail.html(titleName);
    detail.show();
    edit.hide();
    }
  
     });
  });
  
});
修改一环节信息
第一次修改会弹出一次修改成功
第二次修改会弹出两次修改成功
依次累加,求分析原因

解决方案 »

  1.   

    可能我写的太乱了,简单的问下
    怎么最快获取但前元素的上一个<tr>标签
    不用我这样 var parent = $(this).parent().parent().parent();
      

  2.   

    既然你的元素都有id,那何必又去找它的祖先元素呢?$(".update").click(function (){
        var detail =  $("#show");
        var edit = $("#edit");
        detail.hide();
        edit.show();
        edit.find("#btn_canel").click(function (){
             detail.show();
             edit.hide();
              });
        
        edit.find("#btn_save").click(function (){
        
        var titleId = edit.find("input[type=hidden]").val();
        //alert(titleId);
        var titleName = edit.find("input[type=text]").val();
        if(titleName.length==0 ||titleName.length>30){
          alert("环节名称输入不合法");
          return false;
    }这样不行么?
      

  3.   

    恩  确实有ID  但是这个tr是在一个Repeater里面的
      

  4.   

     $(".update")这个选择器会选出来几个对象
      

  5.   

    断点啦,先看这个click event触发了几次,ajax触发了几次
      

  6.   

    或者加个href属性试试
    <a class="update" href="#">修改</a>
      

  7.   

    最后是因为每次都绑定了click事件,要在中取消绑定的事件 edit.find("#btn_canel").click(function (){
            edit.find("#btn_save").unbind("click");
             detail.show();
             edit.hide();
              });