平常都會使用網路上所釋出的jQuery plugin,像這樣:

<script src="xxx.js"></script>

如果是自己的功能要一直重複使用的話,做成plugin會比較方便,維護容易,使用上彈性也比較高

最精簡的jQuery plugin主要有兩個部份要處理
1.用jQuery.fn註冊plugin名稱
2.定義回傳function的動作

例如

//定義一個hello plugin
$.fn.hello = function(){
	//回傳jQuery each方法,將index和value輸出
	return this.each(function(key,value){
		alert(key + " " + $(value).html());
	});
};

使用

$('li').hello();

加入click事件

//加入click事件
$.fn.hello = function(){
	return this.each(function(key,value){
		$(this).click(function(){
			alert($(this).html());
		});
	});
};

設計可以自行傳入設定的plugin

//自行設定callback函式
$.fn.hello = function( setting ){
	//Default 物件設定
	var default_setting = {
		callback : function() {
			alert('Hello');
		}
	};

	//將setting(使用者輸入的設定)覆蓋到預設設定
	var final_settings = $.extend(default_setting, setting);

	return this.each(function(key,value){
		//呼叫callback
		$(this).click(final_settings.callback);
	});
};

使用

$('li').hello({
	callback:function(){
		alert("HAHAHAHA");
	}
});

新增參數

//新增輸入參數
$.fn.hello = function( text, setting ){
	//Default 設定
	text = text || "Hello";
	var default_setting = {
		//新增bind設定,可自行控制事件
		bind:'click',
		callback : function() {
			alert(text);
		}
	};

	//將setting(使用者輸入的設定)覆蓋到預設設定
	var final_settings = $.extend(default_setting, setting);

	return this.each(function(key,value){
		$(this).on(final_settings.bind, final_settings.callback);
	});
};

使用

//將事件改成mouseover,並輸出自訂的文字
$('li').hello("HAHAHA",{bind:'mouseover'});

另外一個簡單的plugin範例

//自製調整css plugin
$.fn.highlight = function( options ) {
	var default_options = {
		'background':'#000',
		'font-size':'10px',
		'color':'#FFF',
	};

	var final_options = $.extend(default_options, options);
	return this.css(final_options);
};

使用

$('li').highlight({'font-size':'40px'});
Categories: jQuery