ยิ่ง plugin มีการทำงาน หรือการกำหนดค่ามากขึ้น ตัวแปร และการส่งค่า
ก็จะมีจำนวนเพิ่มขึ้นเช่นกัน อย่างไรก็ตาม ไม่ได้หมายถึงว่า ทุกค่าที่กำหนด
จะต้องใช้งานเสมอไป
ในเนื้อหาส่วนนี้ เป็นตอนที่ 4 ของเนื้อหาการสร้าง jquery plugin
และเป็นส่วนต่อเนื่องจากเนื้อหาก่อนหน้า
ส่งค่า options เพิ่มเติม เข้าไปใน jquery plugin ตอนที่ 3
https://www.ninenik.com/content.php?arti_id=472 via @ninenik
ตามกล่าวข้างต้น เงื่อนไข หรือโจทย์คือ
อยากให้ plugin ที่เราสร้างขึ้น รองรับ css การกำหนด font-style เช่น ตัวเอียง
และ font-weight เช่น กำหนด อักษรตัวหนา
ดังนั้น เราจะเพิ่มค่าเริ่มต้น เข้าไปในไฟล์ plugin โดยค่าเริ่มต้นทั้ง 2 ค่า เรายังไม่รู้ว่า
จะกำหนดเป็นค่าอะไรดี จึงใช้เป็น null
// ส่วนนี้ สำหรับกำหนดค่าเริ่มต้น
var defaults={
foreground:"red", // กำหนดสีข้อความ
background:"yellow", // กำหนดสีพื้นหลัง ในค่าเริ่มต้นเป็น สีเหลือง
fontStyle:null, // การกำหนด font-style เช่น ตัวเอียง
fontWeight:null // font-weight เช่น กำหนด อักษรตัวหนา
};
จากค่าเริ่มต้นด้านบน 2 ค่าที่กำหนดเป็นค่า null ทำให้ เราไม่สามารถเรียกใช้งาน
ตัวแปร object ทั้ง 2 ค่านั้นได้ทันที
settings.fontStyle การกำหนด font-style เช่น ตัวเอียง
settings.fontWeight font-weight เช่น กำหนด อักษรตัวหนา
ดังนั้น ในโค้ตสำหรับ การทำงานของ plugin เราจึงต้องเพิ่มการตรวจสอบ
การส่งค่า options หรือ ค่าเริ่มต้นถ้ามี ก่อนเรียกใช้งาน
โดยเพิ่มการตรวจสอบดังนี้
// ตรวจสอบค่า settings.fontStyle ว่ามีการกำหนดค่าหรือไม่
if(settings.fontStyle){
$(this).css( 'font-style', settings.fontStyle );
}
// ตรวจสอบค่า settings.fontWeight ว่ามีการกำหนดค่าหรือไม่
if(settings.fontWeight){
$(this).css( 'font-weight', settings.fontWeight );
}
// โค้ตสำหรับ การทำงานของ plugin
});
และจะได้รูปแบบ 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 เช่น กำหนด อักษรตัวหนา
};
// ส่วนสำหรับ เป็นต้วแปร รับค่า 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 );
}
// โค้ตสำหรับ การทำงานของ plugin
});
};
})(jQuery);
เท่านี้ก็ทำให้เรา สามารถ รู้ถึงวิธีการตรวจสอบค่า options ก่อนใช้งานได้
และหมาะสำหรับ การกำหนดโค้ดคำสั่ง plugin ที่จะมีการเรียกใช้งาน
ตัวแปร ที่ยังไม่ได้กำหนดค่าไว้ แต่มีการสร้างชุดคำสั่งไว้รองรับแล้วได้เช่นกัน
ในตอนที่ 5 เราจะมาดูวิธีการเพิ่ม ฟังก์ชั่น เข้าไปใน plugin