1. 程式人生 > >JQuery實戰--能夠編輯的表格

JQuery實戰--能夠編輯的表格

src 總結 black 問題 bsp col ext 背景 meta

  今天學習到了一個實例,其名稱為的能夠編輯的表格。

事實上現的效果是:點擊頁面上的單元格,單元格中的內容變成選中狀態,變成能夠輸入的狀態。向單元格中輸入內容,按下回車。單元格保存其改動後的結果,按ESC,單元格的內容還原成原來的內容。

其原理是:點擊單元格的時候。在單元格內加入一個文本框,其大小充滿整個單元格,其內容為單元格中的內容,改動後的內容又一次賦給單元格。

  HTML代碼:

  

<span style="font-size:18px;"><!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>能夠編輯的表格</title>
    <link href="css/EditTable.css" rel="stylesheet" />
    <script src="js/Jquery.js"></script>
    <script src="js/EditTable.js"></script>

</head>
<body>
    <table  >
        <thead >
            <tr>
                <th colspan="2">    <!--合並兩列-->
                   鼠標點擊表格就能夠編輯
                </th>
            </tr>
        </thead>
        <tbody >
            <tr>
                <th>學號</th>
                <th>姓名</th>
            </tr>
            <tr>
                <td>0001</td>
                <td>張三</td>
            </tr>
            <tr>
                <td>0002</td>
                <td>李四</td>
            </tr>
            <tr>
                <td>0003</td>
                <td>王五</td>
            </tr>
            <tr>
                <td>0004</td>
                <td>趙六</td>
            </tr>
        </tbody>
    </table>
</body>
</html>
</span>
  CSS代碼:

<span style="font-size:18px;">body {
}
table{
    border:1px solid black;
    /*修正單元格邊框合並的問題*/
    border-collapse:collapse;
    width:400px;
}
table td{
    border:1px solid black;
    width:50%;
}
table th{
    border:1px solid black;
    width:50%;
}
tbody th{
    background-color:blue;
}
</span>

  JQuery代碼:

<span style="font-size:18px;">//解決奇偶行的背景色不一樣
//$(document).ready(function () {

//});


//簡化的ready寫法
$(function () {
    //找到表格的內容區域中除了第一個tr外的全部奇數行
    //使用even是為了把tbody tr 返回的全部tr元素中,在數組裏面下標是偶數的元素返回,由於這些元素,實際上才是我們期望的奇數行。奇數行(odd)
    $("tbody tr:even").css("background-color", "#999");

    //找到全部的學號的單元格
    //$("tbody td:even").css("background-color", "red");
    var numTd = $("tbody td:even");
    //給這些單元格註冊鼠標點擊的事件
    numTd.click(function () {



        //找到當前鼠標點擊的td,this相應的就是響應了click的那個td
        var tdobj = $(this);

        if (tdobj.children("input").length > 0) {
            //當前td中的input。不運行click處理
            return false;
        }

        var text = tdobj.html();
        //創建一個文本框
        //去掉文本框的邊框
        //設置文本框中的文字的大小
        //使文本框的寬度與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(text);
        //清空td中的內容
        tdobj.html("");
        //將文本庫插入到td中
        inputobj.appendTo(tdobj);
        //文本框插入後就選中
        inputobj.trigger("focus").trigger("select");
        inputobj.get(0).select();
        inputobj.click(function () {
            return false;
        });
        //處理文本框上的回車和ESC按鍵的操作
        inputobj.keyup(function (event) {
            //獲取鍵值
            var keycode = event.which;
            //處理回車的情況
            if (keycode == 13) {
                //獲取當前文本框的內容
                var inputtext = inputobj.val();
                tdobj.html(inputtext);
            }
            if (keycode == 27) {
                tdobj.html(text);
            }
        });
    });
});</span>

  以上就是整個實例的代碼了。

  1. HTML總結:
    1. table中能夠包括thead和tbody
    2. 表頭的內容能夠放在th中
  2. CSS總結:
    1. 能夠通過border-collaspse:collapse 這樣的方式來使表格中的單元格的邊框合並。
    2. 當th上有背景色時,這個th屬於tr上定義的背景色會無效。
  3. JQuery總結:
    1. $(function(){})是$(document).ready(function(){})的簡化寫法。
    2. $("tbody tr:even")能夠返回tbody中全部索引值為偶數的tr節點(:odd 是為奇數的tr節點)。

    3. function中的this代表運行這個function的對象
    4. children方法能夠獲得某個節點的子節點。能夠制定參數來限制子節點的內容
    5. html方法能夠設置或獲取節點的HTML內容
    6. val方法能夠獲取或設置節點的value值
    7. appendTo方法能夠將一個節點追加到還有一個節點全部子節點的後面
    8. trigger方法能夠觸發某個Javascript的事件發生
    9. Jquery中某個方法的參數function上能夠定義一個event的參數,Jquery會屏蔽瀏覽器的event差異,傳給我們一個可用的event對象
    10. Jquery的event對象上有一個which的屬性,能夠獲得鍵盤按鍵的鍵值(13=回車,27=ESC)

  僅僅有通過不斷地實踐,不斷的總結,編制知識網。和學過的知識聯系起來,那麽我們的收獲才是巨大的。



JQuery實戰--能夠編輯的表格