การเพิ่มชุดคำสั่ง ฟังก์ชั่นใน plugin สามารถเรียกใช้งาน options
ที่เป็น ฟังก์ชั่น ใน plugin ได้
เนื้อหาตอนที่ 5 นี้ต่อเนื่องจากเนื้อหาก่อนหน้า
ตรวจสอบ ว่ามีการส่งค่า options สำหรับใช้งานใน plugin หรือไม่ ตอนที่ 4
https://www.ninenik.com/content.php?arti_id=473 via @ninenik
ในที่นี้จะเพิ่มค่าเริ่มต้นชื่อ complete เป็น ฟังก์ชั่นเข้าไป ตามด้านล่าง
// ส่วนนี้ สำหรับกำหนดค่าเริ่มต้น
var defaults={
foreground:"red", // กำหนดสีข้อความ
background:"yellow", // กำหนดสีพื้นหลัง ในค่าเริ่มต้นเป็น สีเหลือง
fontStyle:null, // การกำหนด font-style เช่น ตัวเอียง
fontWeight:null, // font-weight เช่น กำหนด อักษรตัวหนา
complete:function(){} // กำหนด ฟังก์ชั่น object
};
จะได้ค่าตัวแปร object เพิ่มเข้ามาชื่อ
settings.complete เป็นตัวแปรฟังก์ชั่น
และในส่วน โค้ตสำหรับ การทำงานของ plugin
ก่อนอื่นต้องตรวจสอบว่า ค่าที่ส่งเข้ามา ฟังก์ชั่นหรือไม่
โดยใช้คำสั่ง $.isFunction() ของ jquery
จากนั้น จะเรียกใช้งานฟังก์ชัน ด้วย .call()
// ตรวจสอบว่า ค่าที่ส่งเข้ามา ฟังก์ชั่นหรือไม่
if($.isFunction( settings.complete ) ) {
settings.complete.call( this ); // เรียกใช้ฟังก์ชั่นที่ส่งเข้ามา
}
หากไม่ได้กำหนด การเรียกใช้งานฟังก์ชั่นที่ส่งเข้ามา
ค่าที่ส่งเข้ามาเป็นฟังก์ชั่น ก็จะไม่สามารถทำงานได้
jquery plugin ทั้งหมด
// JavaScript Document
(function($){
// setbackground คือชื่อของ plugin ที่เราต้องการ ในที่นี้ ใช้ว่า setbackground
$.fn.setbackground = function( options ) { // กำหนดให้ plugin ของเราสามารถ รับค่าเพิ่มเติมได้ มี options
// ส่วนนี้ สำหรับกำหนดค่าเริ่มต้น
var defaults={
foreground:"red", // กำหนดสีข้อความ
background:"yellow", // กำหนดสีพื้นหลัง ในค่าเริ่มต้นเป็น สีเหลือง
fontStyle:null, // การกำหนด font-style เช่น ตัวเอียง
fontWeight:null, // font-weight เช่น กำหนด อักษรตัวหนา
complete:function(){} // กำหนด ฟังก์ชั่น object
};
// ส่วนสำหรับ เป็นต้วแปร รับค่า options หากมี หรือใช้ค่าเริ่มต้น ถ้ากำหนด
var settings = $.extend( {}, defaults, options );
/// คืนค่ากลับ การทำงานของ plugin
return this.each(function() {
$(this).css({
"background-color":settings.background,
"color":settings.foreground
});
// ตรวจสอบค่า settings.fontStyle ว่ามีการกำหนดค่าหรือไม่
if(settings.fontStyle){
$(this).css( 'font-style', settings.fontStyle );
}
// ตรวจสอบค่า settings.fontWeight ว่ามีการกำหนดค่าหรือไม่
if(settings.fontWeight){
$(this).css( 'font-weight', settings.fontWeight );
}
// ตรวจสอบว่า ค่าที่ส่งเข้ามา ฟังก์ชั่นหรือไม่
if($.isFunction( settings.complete ) ) {
settings.complete.call( this ); // เรียกใช้ฟังก์ชั่นที่ส่งเข้ามา
}
// โค้ตสำหรับ การทำงานของ plugin
});
};
})(jQuery);
ต่อมา มาดูส่วนของการส่งค่า options ที่เป็นฟังก์ชั่น
สามารถทำได้ดังนี้
<!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" />
<title> </title>
</head>
<body>
<div style="margin:auto;width:75%;">
<h4 class="i_h4">How to Create a Basic Plugin</h4>
<p>Sometimes you want to make a piece of functionality available throughout your code. </p>
</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="js/jquery.setbackground.js"></script>
<script type="text/javascript">
$(function(){
// การเรียกใช้งาน plug in
$(".i_h4").setbackground({
foreground:"#FFFFFF", // ส่งค่า options สีข้อความ
background:"green", // ส่งค่า options เพื่อเติมเข้าไปใน plugin
complete:function(){ //
$(this).css("text-decoration","line-through");
}
});
});
</script>
</body>
</html>
เท่านี้ก็สามารถเข้าใจ การกำหนด options ที่เป็นฟังก์ชั่น และ
การเรียกใช้งาน ใน jquery plugin ได้