• 实战Jquery(二)--能够编辑的表格


        今天实现的是一个表格的样例,通过获取表格的奇数行,设置背景色属性,使得奇偶行背景色不同.这个表格能够在单击时编辑,回车即更改为新输入的内容;ESC还原最初的文本.表格的实现思路非常清晰,仅仅是在实现的过程中会出现一些小bug.通过jQuery函数就能够一一解决.

    以下看下HTML代码:

     

    <!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=gb2312" />
    <title>JQuery实例:能够编辑的表格</title>
    
    <link rel="stylesheet" type="text/css" href="EditTable.css">
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript" src="EditTable.js"></script>
    
    </head>
    
    <body>
    	<table>
    		<thead>
    			<tr>
    				<th colspan="2">鼠标点击表各项就能够编辑</th>
    			</tr>
    				
    		</thead>
    		
    		<tbody>
    			<tr>
    				<th>学号</th>
    				<th>姓名</th>
    			</tr>
    			<tr>
    				<td>000001</td>
    				<td>张三</td>
    			</tr>
    			<tr>
    				<td>000002</td>
    				<td>李四</td>
    			</tr>
    			<tr>
    				<td>000003</td>
    				<td>王五</td>
    			</tr>
    			<tr>
    				<td>000004</td>
    				<td>赵六</td>
    			</tr>			
    		</tbody>		
    	</table>	
    </body>
    </html>
    
       

        在table中能够包括thead和tbody标签,表头的内容放在th中.这样写的优点是能够通过标签选择器选择须要的内容,比方:tbody th{}


    js代码:

     

    //须要首先通过Javascript来解决内容部分的奇偶行的背景色不同
    $(function(){
    	//找到表格的内容区域中全部的奇数行	
    	$("tbody tr:even").css("background-color","#ECE9D8");
    	//找到全部的学号单元格,保存起来
    	var numTd = $("tbody td:even");	
    	
    	numTd.click(function(){		 
    		var tdObj=$(this);
    		if(tdObj.children("input").length>0){
    			// 当前td中有input文本框,不运行click处理
    			return false;
    		}
    		var txt = tdObj.html();	
    	 	//创建一个文本框
    		//去掉文本框边框
    		//设置文本框中字体为16px
    		//使文本框的宽度和td的宽度同样
    		//设置文本框背景色
    		//将当前td中的内容放到文本框中
    		var inputObj=$("<input type='text'>").css("border-width","0")
    			.css("font-size","16px").width(tdObj.width())
    			.css("background-color",tdObj.css("background-color"))
    			.val(tdObj.html());
    		
    		//将文本框插入到td中
    		tdObj.html("");
    		inputObj.appendTo(tdObj);
    		//文本框插入之后被选中
    		inputObj.trigger("focus").trigger("select");		
    		inputObj.click(function(){
    			return false;
    	     });
    		
    		//处理文本框上回车和ESC按键操作
    		inputObj.keyup(function(event){
    			var keycode=event.which;
    			//回车
    			if(keycode==13){
    				var inputtext=$(this).val();
    				tdObj.html(inputtext);
    			}
    			//esc
    			if(keycode==27){
    				tdObj.html(txt);
    			}
    			});			
    	 });	
    });

              在$ 函数中,通过$("tbody tr")能够返回tbody中全部tr节点,另外,$("tbody tr:even")能够返回tbody中全部索引值是偶数的tr节点.

    在上面的代码中我们能够看到html方法,它能够设置或获取节点的html内容:

             tdObj.html(inputtext);  为设置节点内容

             var txt=tdObj.html();  为获取节点html内容


             var inputObj=$("<input type='text'>");

             在这里假设$()方法的參数是一般html文本就能够创建一个DOM节点,并包装成jQuery对象.而后面一连串的CSS代码是链式写法,因为jQuery大部分方法都会返回运行这种方法的jQuery对象,因此能够採用这个写法来编写给予jQuery的代码.


             在处理文本框上回车和ESC按键操作时,响应keyup事件,在jQuery中,某个事件方法的參数function上能够定义一个event的參数,jQuery会屏蔽浏览器的event差异,传给我们一个可用的event对象,这个event对象上有一个which属性能够获得键盘按键的键值.

    
    

    CSS代码:

     

    table{
    	border:1px solid black;
    	/*修正单元格之间的边框不能合并的问题*/
    	border-collapse:collapse;
    	400px;
    }
    table td{
    	border:1px solid black;
    	50%;
    }
    table th{
    	border:1px solid black;
    	50%;
    }
    tbody th{
    	background:#A38ae9;
    	}
    

             CSS 代码没有什么可说的了,这里用的是最简单的CSS样式并且代码量非常少.jQuery的强大才刚刚体会到,接下来的实战一定会更加easy,希望能学到很多其它的知识,添加代码量.



  • 相关阅读:
    LTE-TDD随机接入过程(3)-RAR(MSG2)以及MSG1的重传
    《javascript设计模式》读书笔记一(接口)
    数据结构——算法之(033)(两个有序单链表合并为一个有序的单链表)
    利用redis和php-resque实现后台任务
    最能毁掉程序猿健康的几件事
    springMVC4(11)使用注解完毕数据格式化
    Linux
    Linux
    Linux
    Fluent_Python_Part4面向对象,11-iface-abc,协议(接口),抽象基类
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/7267460.html
Copyright © 2020-2023  润新知