Jquery编辑表结构(增行,删行,编辑行,保存行)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="jquery-1.4.1.min.js"></script>
<title>无标题文档</title>

 <script type="text/javascript">
  //用于添加一个新行
     function do_Add(tag)
  {
   
   //首先将DOM对象转换成JQuery对象
   //然后获得当前DOM对象的父元素tr
   //调用Jquery的clone方法,克隆一个行的副本
   var tr = $(tag).parents("tr").clone();
   //为了用于操作的列被修改时出现重复
   var td = tr.find("td").eq(4).html("");
   //判断此行有几列
   var count = tr.find("td").length;
   //使用each方法绑定当前列的click事件,使该列可以被编辑
   tr.find("td").each(function(i){
    //避免最后一个列被修改
    if(i<count-1){
     $(this).click(function(){
       editTd(this);
      });     
    }
   });
   //添加取消事件(创建一个超链接,用于取消添加行)
   var cacel = $("<a>").attr("href","#").text("取消").click(function(){
     do_cancel(this);
    }).appendTo(td);
   //追加保存事件(创建一个超链接,用于保存添加行)
   var save = $("<a>").attr("href","#").text("保存").click(function(){
     do_save(this);
    }).appendTo(td);
   
   //把克隆的行添加到表格中
   tr.appendTo($("#tbody"));
   return false;
  }
  //用于创建一个输入框,并把这个输入框添加到当前列中,在这个输入框失去焦点的时候把输入值添加到当前的列中
  function editTd(tag){
   
   //把DOM对象转换成Jquery对象
   var td = $(tag);
   //获取当前对象的文本内容
   var text =  td.html();
   //创建一个文本框,把原来的列中的文本值赋值给该文本框
   
   var input=$("<input id='a'>").val(text).blur(function(){
     //在该文本框失去焦点的时候,把文本框的值添加到列中
     td.html($(this).val()).click(function(){
      editTd(this);
      });
    }); 
    
   td.html(input).unbind("click");
   $("#a")[0].focus();
  }
  //取消事件
  function do_cancel(tag)
  {
   $(tag).parents("tr").remove(); 
  }
  //列的保存事件
  function do_save(tag)
  {
    this.focus();
   //获取当前点击的父元素,整个行
   var tr =$(tag).parents("tr");
   //获取当前行有几列
   var count = tr.find("td").length;
   //获取当前行的所以文本
   tr.find("td").each(function(i){
     if(i<count-1){
      alert(count+"\n"+$(this).text()) 
     }
    });
  }
    </script>
    <style type="text/css">
     #Info{border:solid 1px }
  #Info td{border:solid 1px ;width:200px}
    </style>
</head>

<body>
 <table id="Info">
     <thead>
         <tr>
             <td>编号</td>
                <td>名称</td>
                <td>链接</td>
                <td>时间</td>
                <td>操作</td>
            </tr>
        </thead>
        <tbody id="tbody">
         <tr>
             <td>0</td>
                <td>abc</td>
                <td>http://www</td>
                <td>2012/2/1</td>
                <td>
                 <a href="#" onclick="do_Add(this)">按模板添加</a>
                </td>
            </tr>
        </tbody>
    </table>
</body>
</html>

posted on 2012-01-10 14:47  水行者  阅读(1212)  评论(0编辑  收藏  举报

导航