歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 用 jQuery編寫的可編輯的表格

用 jQuery編寫的可編輯的表格

日期:2017/3/1 10:26:49   编辑:Linux編程

1、 思路

首先實現隔行換色的效果

當點擊想要修改的列時,創建文本框

當點擊 enter時提交數據,當點擊esc返回的鍵時,取消輸入的內容

2.代碼解析

Html代碼 :

<body>

<div align="center">

<h1>

顯示員工界面

</h1>

<table>

<thead>

<tr>

<td><input type="checkbox" name="chk"> </td>

<td>序號 </td>

<td>姓名</td>

<td>性別</td>

<td>年齡</td>

<td>出生日期</td>

<td>薪資</td>

<td>部門</td>

</tr>

</thead>

<tbody>

<tr>

<td><input type="checkbox" name="chk"> </td>

<td >1</td>

<td>老王</td>

<td>女</td>

<td>23</td>

<td>5435343</td>

<td>10000</td>

<td>河軟</td>

</tr>

<tr>

<td><input type="checkbox" name="chk"> </td>

<td>1</td>

<td>老王</td>

<td>女</td>

<td>23</td>

<td>5435343</td>

<td>10000</td>

<td>河軟</td>

</tr>

<tr>

<td><input type="checkbox" name="chk"> </td>

<td>1</td>

<td>老王</td>

<td>女</td>

<td>23</td>

<td>5435343</td>

<td>10000</td>

<td>河軟</td>

</tr>

</tbody>

</table>

</div>

</body>

Js代碼為:

$(document).ready(function(){

//實現隔行變色的效果

//首先獲取tbody中的所有的tr,然後采用:even選擇出奇數行的所有的特點,但是返回的是偶數行

$("tbody>tr:even").css("background-color","pink");

///功能一樣,是偶數行,實際是奇數行

$("tbody>tr:odd").css("background-color","#BEBEBE");

//當點擊tbody中的td時,能夠把td中的內容替換成一個text框,進行修改

//點擊enter 能夠提交數據 點擊esc鍵撤銷修改

//獲取所有的tr,並注冊事件,因為在遍歷的時候序號不可編輯,所以序號這一列不能編輯

$("tbody tr").each(function(index,dom){

//通過dom得到所有的tr,判斷tr中的td如果是>2的才可以編輯

$(dom).children("td:gt(1)").click(function(){

//獲取td的jQuery對象

var $td = $(this);//注意得到td的jQuery的對象的時候用的是this,也就是點擊哪個獲取哪個,如果用的是dom,得到的是整行。

//得到文本框內容

var tdText = $td.text(); //text 取得所有匹配元素的內容。

//判斷如果已經創建了input,就不在創建了,如果沒有創建,在創建,是通過判斷孩子節點

if($td.children("input").length>0){

return false;

}

//清空td中的文本

$td.html(""); //設置每一個匹配元素的html內容

//創建可編輯的input

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

$input.css("background-color",$td.css("background-color"));//設置input的框元素和td中的顏色相同

$input.css("width",$td.width());//寬度和td的寬度相同

$input.css("border-width",0);//文本框的邊框為0

//在得到文本框的同時得到文本框以前的內容

$input.val(tdText); //獲得第一個匹配元素的當前值。

//把創建的input放到td中

$td.append($input);

//當觸發td的鍵盤事件的時候,如果點enter鍵,保存,如果點esc,取消輸入的內容

$td.keyup(function(event){

//獲取鍵盤按下的事件

var key = event.which;

//alert(key);

if (key == 13) {

$td.html($input.val());//得到文本框的值並放到td中

}else if(key==27){

$td.html(tdText);

}

});

});

});

});

3.總結

在這裡我大概總結一下text(),val(),html()的區別,因為在這個例子之間,反復用到了這幾個屬性

html():取得第一個匹配元素的html內容。這個函數不能用於XML文檔。但可以用於XHTML文檔。

html(val):設置每一個匹配元素的html內容

val():獲得第一個匹配元素的當前值。

val(val): 設置每一個匹配元素的值。

text():取得所有匹配元素的內容。

text(val): 設置所有匹配元素的文本內容

效果圖為:

Copyright © Linux教程網 All Rights Reserved