jQuery插件开发
注意事项:
- 插件的文件命名必须严格遵循jQuery.[插件名].js的规则,以便于与其他js文件的区分,如新插件文件jquery.newplug.js。
- 如果是对象级别插件,所有方法都应依附于jquery.fn主体对象,如果是类级别的插件,所有的方法都应依附于jquery 对象。
- 无论是对象级别的插件还是类级别的插件,结尾都必须以分号结束,否则,在文件压缩时,会出现错误提示消息。
- 在插件内部的代码中,如果要访问每个元素,可以使用this.each方法来遍历全部元素。
- 在插件内部,this所代表的是通过jQuery选择器选取的对象,而非传统意义上的对象引用。
- 由于jQuery代码在调用方法时,可以采用链写的方法同时调用多个方法,因此为了保证这个功能的实现,插件本身必须返回一个jQuery对象。
- 虽然“$”美元符,可以与jQuery字符相代替,但是在编写插件代码中,尽量不要使用“$”符号,以避免和别的代码冲突。
- 在编写对象级别的插件时,使用jQuery.fn.extend()方法进行扩展,而针对类级别的插件,则使用jQuery.extend() 方法进行扩展。
对象级别的插件开发
jquery.liFocusColor.js
1 /*------------------------------------------/ 2 功能:设置列表项中获取鼠标焦点时的背景色 3 参数: li_color 可选 4 返回:原调用对象 5 实例:$("ul").focusColor("red"); 6 /------------------------------------------*/ 7 ; 8 (function($) { 9 $.fn.extend({ 10 focusColor : function(li_color) { 11 var def_color = "#ccc";// 获取焦点的默认颜色 12 var lst_color = "#fff";// 失去焦点的默认颜色 13 li_color = (li_color == undefined) ? def_color : li_color; 14 $(this).find("li").each(function() { 15 $(this).mouseover(function() { 16 $(this).css("background-color", li_color); 17 }); 18 $(this).mouseout(function() { 19 $(this).css("background-color", lst_color); 20 }); 21 }); 22 return $(this);// 返回$对象,保持链式操作 23 } 24 }); 25 })(jQuery);
类级别的插件开发
jquery.towOperateResult.js
1 /*------------------------------------------/ 2 功能:计算两个数相加的结果 3 参数: 数字p1,p2 4 返回:两个数相加或相减的结果 5 实例:$.addNum(1,2); 6 /------------------------------------------*/ 7 ; 8 (function($) { 9 $.extend({ 10 "addNum" : function(p1, p2) { 11 p1 = (p1 == undefined) ? 0 : p1; 12 p2 = (p2 == undefined) ? 0 : p2; 13 return parseInt(p1) + parseInt(p2); 14 }, 15 "subNum" : function(p1, p2) { 16 p1 = (p1 == undefined) ? 0 : p1; 17 p2 = (p2 == undefined) ? 0 : p2; 18 return parseInt(p1) - parseInt(p2); 19 } 20 }); 21 })(jQuery);