定義外掛程式的結構骨架:
書中最開始使用的結構骨架如下:
複製程式碼
程式碼>
jQuery.fn.fluginmane=function(){
return this.each(function(){
//code }
這種結構不是很理想,特別書中提到,為了防止衝突例子不使用$,而使用jQuery。在這裡,我們使用匿名函數的方式實作插件的結構骨架,這樣就可以防止可能的衝突。也希望大家好好了解與下匿名函數相關的知識。
(function($){
(function($){
(ffn .fluginname=function(){
return this.each(function(){
//code...
注意點:
1.為了統一和規範,我們的外掛程式檔案都將以jquery.fluginname.js的形式命名(fluginname代表你外掛程式的名字)。
2.我們使用到的函數都需要是私有的,不能被外部存取到,這樣可保證插件不會受到外部的影響和乾擾(匿名函數已經保證了這點)。
3.允許使用者使用options控制插件的行為。
4.預設的options允許外部訪問,這樣使用者就可以用最少的程式碼實現自訂化。
5.this.each()會遍歷所有符合要求的對象,他本身就是個jquery對象,插件最後返回該對象。其實透過這種方式就實現了javascript的鍊式模式。
我們的第一個外掛程式:txtHover
1.程式碼實作:
複製程式碼
複製程式碼
程式碼如下
(function($){
$.fn.txtHover=function(){
return this.each(function(){ });
複製代碼
代碼如下:
this is test.
複製程式碼
程式碼如下:
(function ($) {
(function ($) { >$.fn.txtHover = function () {
return this.each(function () {
var temp = $(this).text();
$(this).hover(function ( ) {
$(this).text('text changed!');
}, function () {
$(this).text(temp);
});
}); 複製程式碼複製程式碼複製程式碼複製程式碼複製程式碼 程式碼如下:
(function ($) {
$.fn.txtHover = function (options) {
var defaults = { txt: 'text changed!' };
var opt = $. extend(defaults, options);
return this.each(function () {
var self = $(this);
var temp = self.text();
self.hover(function () {
self.text(opt.txt);
}, function () {
self.text(temp);
});
});
}
})(jQuery);
外掛定義了一個變數defaults,設定了預設的文字資訊。我們使用$.extend()(不了解這個函數的朋友可以去查閱資料)方法擴充了一個新變數opt,如果使用者傳入的options變數包含txt,則opt就使用使用者傳入的,否則就使用系統預設的。我們在系統中定義了 var self = $(this),來取代this物件。 this在javascript中是個很惱人的對象,在不同函數上下文中所代表的對象會不同,將this傳給一個另外的變數會避免程式出現一些錯誤。不熟悉的朋友很有必要好好掌握該知識點。
用戶在html頁面上呼叫插件的時候,可以自訂滑鼠移到div上面時候的文字內容了。
$(document).ready(function () {
$('#test').txtHover({ txt: 'test' });
}); 好了,今天的範例到此好了,今天的範例到此為止。