Begining Jquery Part I

Written on Friday, February 20th, 2009 at 11:22 am by cpcpyc
Filed under งานพัฒนาและบำรุงรักษาฯ.

jQuery เป็น javascript framework ที่ช่วยให้การเขียน
dynamic html, DOM, AJAX เขียนสั้นกว่าเดิมแต่เขียนได้ง่ายกว่า :D

แล้วยังเขียนแล้ว Cross-browser IE 6.0+, FF 2+, Safari 2.0+, Opera 9.0+ อีก
เรียกว่าเขียนแล้วแทบไม่ต้องไปทดสอบกันทีละ browser เลย
( ถ้าใช้ css ผ่าน jquery ทั้งหมดไม่ต้องทดสอบเลย เพราะว่า jquery สนับสนุน css 3.0 แล้ว
เรียกได้ว่าข้ามขีดจำกัดของ browser กันเลยทีเดียว แต่ถ้าเขียน css ธรรมดาประกอบด้วยก็ต้องทดสอบอยู่ดี..แป่ว )

ดาวน์โหลด jquery.js เวอร์ชั่นล่าสุดจาก http://www.jquery.com

=======================================================

jquery step by step (1)

คำสั่ง $(document).ready

เริ่มต้นเลยนะครับ :)
ปกติแล้วถ้าเราเขียนโปรแกรม javascript
เราจะใช้ event onload เช่น onload=”function_name()” ใน tag body
แต่ใน jquery นี้ได้แก้ปัญหาให้เราสามารถแทรก event onload ได้ง่ายกว่า
โดยใช้คำสั่งของ jquery อย่างข้างล่างนี้

$(document).ready(function(){
//คำสั่งที่นี่
}

หรือจะเขียน สั้นๆ ได้ด้วย

$(function(){
//คำสั่งที่นี่
}

ได้ผลลัพธ์เหมือนกันครับ

=======================================================

<!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>

<title>jquery step by step</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=tis-620″ />
<script type=”text/javascript” src=”jquery.js”></script>

<script type=”text/javascript”>
$(document).ready(function(){
alert(’แสดงข้อความเมื่อเว็บเพจโหลดเสร็จเรียบร้อย’);
});
</script>

</head>
<body>

<!– ว่างเปล่า ไม่มีอะไร –>

</body>
</html>

=======================================================

การกำหนดค่า event handler ให้กับ tag ต่างๆ

นอกจากคำสั่ง javascript event onload ที่เราสามารถเขียนในแบบของ jquery แล้ว
jquery ยัง มีวิธีการทำให้เรียนเขียน event handler (ส่วนจัดการกับ event)
ได้จากเดิมที่จะเขียน

function function_name(){
//คำสั่ง
}

และใน tag html ก็จะเขียนว่า

<button onclick=”function_name”>try click me!</button>

แต่เมื่อเราใช้ jquery แล้วส่วนใหญ่มักจะไม่ใช้การเขียน function แบบนี้มากนัก
เราสามารถเปลี่ยนจากคำสั่งข้างบนเป็นดังนี้ ..

$(document).ready(function(){
$(”#id_of_button”).click(function(){
//คำสั่ง
});
});

และในส่วนของ html จะเขียนว่า
<button id=”id_of_button”>try click me!</button>

สังเกตว่าเราใช้ #id_of_button อ้างถึง button ‘try click me!’
ทำให้สามารถกำหนด event onclick ของ button จากส่วนของ $(document).ready

แต่ถ้าเราต้องการกำหนด event ให้กับ button ของทั้งหน้าเลย
จะเขียนว่า
    $(document).ready(function(){
$(”button”).click(function(){
//คำสั่ง
});
});

ถ้าเขียนรูปแบบนี้จะเป็นการกำหนด event ให้กับ button ของเว็บหน้านั้นทั้งหน้าเลยครับ
เขียนครั้งเดียวแต่มีผลกับทุก tag button
=======================================================

ตรงข้างในเครื่องหมาย “..” ของ $(”..”) เรียกว่า selector ครับ

ตอนนี้เรารู้จัก selector ถึง 3 แบบแล้วด้วยกัน

  1. $(document) เป็นการ select ทั้งหน้านั้น ส่วน $(document).ready ก็คือ event เมื่อหน้านั้นถูกโหลดมาเรียบร้อยแล้ว
  2. $(”#…”) อย่างเช่น $(”#id_of_button”) ก็คือการ select tag ใดๆ ที่มี attribute id เท่ากับ id_of_button
  3. $(”tagname”) อย่างเช่น $(”button”) ก็คือการ select tag button ของทั้งหน้านั่นเองครับ

จะกำหนด event ให้กับ tag ไหนก็ต้อง select tag นั้นครับผม
ยังมี selector อีกมากมากครับ ที่ช่วยให้เราเลือกและกรองเอาเฉพาะ tag ที่เราต้องการได้
สำหรับ tag เรียกกันอีกอย่างว่า element ครับ
เอ่อจะเรียกไงดีเนี่ย -*- เอา element ละกันเท่ห์ดี :D

=======================================================

<!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>

<title>jquery step by step</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=tis-620″ />
<script type=”text/javascript” src=”jquery.js”></script>

<script type=”text/javascript”>
    $(document).ready(function(){
$(”#id_of_button”).click(function(){
alert(”Ouch!, you kick me!!”);
});
});
</script>

</head>
<body>

<button id=”id_of_button”>try click me!</button>

</body>
</html>

=======================================================

Leave a Reply