การทำไฮไลท์แถวในตาราง ก็เพื่อให้ยูสเซ่อร์มองได้สะดวก เมื่อข้อมูลมันเยอะๆ ผลลัพธ์จะเป็นดังภาพครับ
มาดูกันครับว่าทำอย่างไร
โครงสร้าง HTML :
<table id="table"> <tr> <th>ลำดับ</th> <th>สาขา</th> </tr> <tr class='even' > <td>1</td> <td>สุรวงศ์</td> </tr> <tr class='odd' > <td>2</td> <td>เพชรบุรีตัดใหม่</td> </tr> <tr class='even' > <td>3</td> <td>รามอินทราทีมA</td> </tr> </table> |
ตกแต่งตารางด้วย CSS:
/* ใช้เพื่อแต่งตารางให้ดูดี */ #table .odd td { background:#eee; border-top:1px solid #DDDDDD; padding:3px; } #table .even td { border-top:1px solid #DDDDDD; padding:3px; } /* เตรียมไว้ทำไฮไลท์ ด้วย jQuery */ .highlight td { background:#FFFFCC !important; } |
ถ้าไม่เซตลงไปถึง td ie6 มันจะไม่ยอมแสดงผล
หลังจากนั้น include jQuery เข้ามา
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> |
เขียนโค้ดให้มันไฮไลท์ตอนเอาเมาส์ชี้เหนือแถว และกลับไปเหมือนเดิม เมื่อเมาส์ผ่านไป
$(function(){ //+ highlight row $('#table tr').mouseover(function(){ $(this).toggleClass('highlight'); }); $('#table tr').mouseout(function(){ $(this).toggleClass('highlight'); }); }) |
โค้ดทั้งหมดจะเป็นดังนี้
<!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 src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> <title>Highlight row</title> <style> /* ใช้เพื่อแต่งตารางให้ดูดี */ #table .odd td { background:#eee; border-top:1px solid #DDDDDD; padding:3px; } #table .even td { border-top:1px solid #DDDDDD; padding:3px; } /* เตรียมไว้ทำไฮไลท์ ด้วย jQuery */ .highlight td { background:#FFFFCC !important; } </style> <script type="text/javascript"> $(function(){ //+ highlight row $('#table tr').mouseover(function(){ $(this).toggleClass('highlight'); }); $('#table tr').mouseout(function(){ $(this).toggleClass('highlight'); }); }) </script> </head> <body> <table id="table"> <tr> <th>ลำดับ</th> <th>สาขา</th> </tr> <tr class='even' > <td>1</td> <td>สุรวงศ์</td> </tr> <tr class='odd' > <td>2</td> <td>เพชรบุรีตัดใหม่</td> </tr> <tr class='even' > <td>3</td> <td>รามอินทราทีมA</td> </tr> </table> </body> </html> |
program says:
06/08/2552 at 06/08/2552
คลิ๊กที่ Live Demo ไม่เห็นมีสีเหมือนในรูปเลยครับ
administrator says:
06/08/2552 at 06/08/2552
ตายแล้วเพิ่งเห็นว่า เป็นบั๊กในไฟฟ้อก เดโม ถ้ารันด้วย ie จะเป็นอย่างภาพครับ
ขอแก้แมลงก่อน
administrator says:
06/08/2552 at 06/08/2552
แก้แล้วๆ ผมผิดเองแหละ ใส่คอมเม้นท์ใน css ผิด แทนที่จะเป็น
/* ใช้เพื่อแต่งตารางให้ดูดี */
ทะลึ่งใส่
<!– ใช้เพื่อแต่งตารางให้ดูดี –>
ผมผิดเอง ขอบคุณที่เม้นท์มานะครับ ท่านที่ได้อ่านหลังจากคอมเม้นท์นี้ โปรดทราบว่าโค้ดด้านบน ถูกต้อง 100% ครับ
mr.sing says:
07/08/2552 at 07/08/2552
แจ่มๆ ครับ ขอบคุณครับ..
sitti says:
27/08/2552 at 27/08/2552
สุดยอดครับ อยากเก่งเหมือท่าน platoosom จัง
ไปเอาความรู้มาจากไหนขอรับท่าน
administrator says:
27/08/2552 at 27/08/2552
ดูในบทความนี้ครับ http://www.select2web.com/jquery/jquery-changing-element-style.html
ผมได้เขียนอธิบายคำสั่ง toggleClass() ไว้แล้ว
คำสั่งในกลุ่มจัดการ css เอาไปประยุกต์ได้เพียบ
ต่อคำถามที่ว่า <ไปเอาความรู้มาจากไหนขอรับท่าน> ผมอ่านพื้นฐานจากหนังสือ jQuery in Action และ Learning jQuery
ซึ่งดาวน์โหลดได้ที่นี่ครับ http://www.select2web.com/ebook-downloads
sitti says:
27/08/2552 at 27/08/2552
เรียนท่าน platoosom ที่นับถือ
กระพ้มไปดาวน์โหลดแล้วนะครับ
หุหุหุ ภาษาฝรั่งทั้งนั้นแล – -”
ขอดูดความรู้จากท่านไปเรื่อยๆ ก่อนละกันนะครับ
ขอบคุณครับ