jquery 面向对象API使用

(function($) {
	
	$.extend($.fn, {
		//=====================================================================================
		//验证码
		captcha : function(options) {
			if (!this.length) {
				options && options.debug && window.console && console.warn( "nothing selected, can't captcha, returning nothing" );
				return;
			}
			
			//判断是否注册过验证码
			var captchaObj = $.data(this[0], 'captcha');
			if ( captchaObj ) {
				$(this).attr("src", captchaObj.settings.url + "?" + Math.random());
				return captchaObj;
			}
			
			var opts = {};
			if(typeof options == "string"){
				opts = $.extend({}, $.fn.captcha.defaults, {url:options});
			}else {
				opts = $.extend({}, $.fn.captcha.defaults, options);
			}
			captchaObj = new $.captchaObj( opts, this[0] );
			$.data(this[0], 'captcha', captchaObj);
			return captchaObj;
		}
		//=====================================================================================
	});
	
	$.fn.captcha.defaults = {
		url : "",
		show: true
	};
	
	//=====================================================================================
	//验证码
	$.captchaObj = function(options, element){
		this.settings = options;
		this.currentElement = element;
		this.init();
	}
	
	$.extend($.captchaObj,{
		prototype: {
			init : function(){
				var url = this.settings.url;
				if(this.settings.show){
					$(this.currentElement).attr("src", this.settings.url + "?" + Math.random());
				}
				$(this.currentElement).bind("click", function(){
					$(this).attr("src", url + "?" + Math.random());
				}).bind("mouseover", function(){
					$(this).css("cursor", "pointer");
				});
			}
		}
	});
})(jQuery);

上面的jquery面向对象涉及到的知识点有


1.jquery.extend 函数的使用

extend($.captchaObj,  src1, src2, src3) 会将src1,src2,src3 合并到 $.captchaObj中, 这样是修改了$.capachaObj的结构的

如果想得到合并的结果,不改变$.capachaObj的结构则按下面的方式

var result = $.extend({}, {name:"Troy", age : 21}, {name:"zero", sex:"boy"})

合并后的结果是 result = {name:"zero", age : 21,  sex : "boy"} 后面的会覆盖前面的属性

上面的参数中如果省略 $.captchaObj,那么就是将src直接添加到调用$.extend的对象上去

就是将src对象添加到jquery全局对象中


2. jQuery.data() 的作用是为普通对象或 DOM Element 附加(及获取)数据类似于缓存的东东

具体讲解可以参考这篇文章       http://www.cnblogs.com/ellisonDon/archive/2012/08/12/2635316.html


3. this[0] 表示调用captcha方法的对象,这里为调用captcha方法的dom对象


4. $.fn是指jquery的命名空间,加上fn的方法以及属性,会对jquery实例每一个有效

jQuery为开发插件提拱了两个方法,分别是: 
jQuery.extend(object);为扩展jQuery类本身.为类添加新的方法。 
jQuery.fn.extend(object);给jQuery对象添加方法


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值