编写jquery插件的一种方式

/********************************************
 * jquery插件扩展方法。
 * 使用方法:
 * 1)初始化
 * $(selector).extendPlugin({
 * 		setting1: 'customized_value'
 * })
 * 2)调用方法
 * $(selector).extendPlugin("
 *********************************************/
(function($, undefined) {
	
	
	//设置默认的配置信息
	var def_settings = {
		setting1: 'default_value',
		setting2: 'default_value'
	};	
	
	/**
	 * 定义对外的接口。
	 */
	var exposeMethods = {
		//根据参数初始化插件
		init : function(settings) {
			var iSettings = $.extend(def_settings, settings);
			$(this).each(function() {
				var target = $(this);				
				new ExtendPlugin(iSettings, target);
			});	
		},			
		
		/**
		 * 调用接口进行一些操作
		 * @return 返回结果集
		 */
		doOperation : function() {
			var extendPlugin = $(this).data("extendPlugin");
			if (extendPlugin == null) {
				return null;
			}
			var result  = extendPlugin.doOperation();
			return result;
		}				
	};
	
	//扩展jquery的实例方法
	$.fn.extend({
		/**
		 * 构造插件对象. settings的设置项参见上面的def_settings的属性说明。
		 */
		extendPlugin : function(method) {
			if (exposeMethods[method]) {
				return exposeMethods[method].apply(this, Array.prototype.slice.call(arguments, 1));
			} else if (typeof method === 'object' || !method) {
				exposeMethods.init.apply(this, arguments);
			} else {
				$.error('The method ' + method + ' does not exist in $.extendPlugin');
			}		
		}
	});	
	
	/**
	 * 定义ExtendPlugin对象
	 * @param target 对象附着的HTML对象的jquery实例
	 */
	ExtendPlugin = function(settings, target) {	
		
		var plugin = this;
		
		//保存配置项
		this.settings = settings; 
		
		//将对象保存到附着的DOM对象上		
		this.target = target;
		target.data("extendPlugin", this);
		
		//做一些其他的初始化操作
	}				
	
	/**
	 * 定义ExtendPlugin的其他实例方法
	 */
	ExtendPlugin.prototype = {
		
		doOperation: function() {
			//do some operation.
		},
		
		doOtherOperation: funciton() {
			
		}
		
	};
	
	//定义静态方法	
	/**
	 * 判断文字是否为全角字符(中文包括在全角字符中)
	 *	半角范围:u0000 - u00FF, uFF61 - uFF9F, uFFE8 - uFFEE 
	 *	全角范围:
	 *   	全角数字(0-9) uFF10 - uFF19
	 *		全角大文字(A-Z): uFF21 - uFF3A
	 *		全角小文字(a-z): uFF41 - uFF5A
	 *		全角平仮名:u3040 - u309F
	 *		全角片仮名:u30A0 - u30FF
	 *		全角Latin: uFF01 - uFF5E
	 *		全角Symbol: uFFE0 - uFFE5
	 * @param character 需判断的字符
	 * @return true-中文字符;false-非中文字符
	 */
	ExtendPlugin.isFullWidthCharacter = function(character) {
		if (character==null || character=="") {
    		return false;
    	}
		if (!ExtendPlugin.charRange) {
			ExtendPlugin.charRange = {
				uFF61: parseInt("FF61", 16),
				uFF9F: parseInt("FF9F", 16),
				uFFE8: parseInt("FFE8", 16),
				uFFEE: parseInt("FFEE", 16)
			};
		}		
		var charRange = ExtendPlugin.charRange;
		var iCharacter = parseInt(character.charCodeAt(0));
		if (iCharacter < 256) {
			return false;
		} else if (iCharacter>=charRange.uFF61 && iCharacter<=charRange.uFF9F) {
			return false;
		} else if (iCharacter>=charRange.uFFE8 && iCharacter<=charRange.uFFEE) {
			return false;
		}
		return true;
	}
})(jQuery);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值