$.fn.extend是一个实例的扩展,但是$.extend是类的扩展 <script type="text/javascript"> (function($){ $.fn.extend({ myPlugName:function(){ $(this).click(function(){ alert($(this).val()); }); } }); })(jQuery); </script>
<body> <input type="button" value="点击我" id="btn" /></body> <script type="text/javascript"> $("#btn").myPlugName(); </script>
<script type="text/javascript"> (function($){ $.fn.hilight=function(options){ var defaults={ foreground:‘red‘, background:‘yellow‘ }; var opts = $.extend(defaults,options); $(this).css("background-color",opts.background); $(this).css("color",opts.foreground); }; })(jQuery); </script> <body> <div id="myDiv">This is a Params JQuery!</div> </body> <script type="text/javascript"> $("#myDiv").hilight({foreground:‘blue‘}); </script>
var opts = $.extend(defaults,options);这句话的意思是吧defaults的属性和options的属性合并并保存到opts中
由于美元符号(“$”)不仅仅只有jQuery库会使用到,其他Javascript库也可能使用到,假如其他库中“$”也有特别的含义,那么就会引起不必要冲突了。
(function($) { $.fn.myPluginName = function() { // your plugin logic }; })(jQuery);
1.添加jQuery对象级的插件,是给jQuery类添加方法 ;(function($){ $.fn.extend({ "函数名":function(自定义参数){ //这里写插件代码 } }); })(jQuery); 或者 ;(function($){ $.fn.函数名=function(自定义参数){ //这里写插件代码 } })(jQuery); 调用方法:$("#id").函数名(参数); 2.jQuery类级别的插件,相当于添加静态方法 ;(function($){ $.extend({ "函数名":function(自定义参数){ //这里写插件代码 } }); })(jQuery); 或者 ;(function($){ $.函数名=function(自定义参数){ //这里写插件代码 } })(jQuery); 调用方法:$.函数名(参数);
jquery插件的种类:
1.对象级别的插件开发,即给jQuery对象添加方法,封装对象方法的插件,如:parent()、appendTo()
2.一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法,jQuery的全局函数就是属于jQuery命 名空间的函数,封装全局函数的插件
3.选择器插件
jQuery插件机制
jQuery为开发插件提拱了两个方法,分别是:
jQuery.fn.extend(object); 给jQuery对象添加方法。
jQuery.extend(object); 为扩展jQuery类本身.为类添加新的方法,可以理解为添加静态方法。
这两个方法都接受一个参数,类型为Object,Object对应的"名/值对"分别代表"函数或方法体/函数主体"。
1.对象级别的插件开发,
这里的方法提供一个参数value,如果调用方法时传入value,那么就用这个值来设置字体颜色,否则就是获取匹配无此的字体颜色的值
<span style="font-size:12px;">;(function($){ $.fn.extend({ "color":function(value){ return this.css("color",value); } }); })(jQuery);</span>
调用时可直接写成:$("div").color("red");
另外如果要定义一组插件,可以使用如下所示写法:
<span style="font-size:12px;">;(function($){ $.fn.extend({ "color":function(value){ //这里写插件代码 }, "border":function(value){ //这里写插件代码 }, "background":function(value){ //这里写插件代码 } }); })(jQuery);</span>
2.封装全局函数的插件
例如新增两个函数,用于去除左侧和右侧的空格。
<span style="font-size:12px;">;(function($){ $.extend({ ltrim:function(text){ return (text||"").replace(/^\s+g,""); }, rtrim:function(text){ return (text||"").replace(/\s+$/g,""); } }); })(jQuery); 或者 ;(function($){ $.ltrim=function(text){ return (text||"").replace(/^\s+g,""); }, $.rtrim=function(text){ return (text||"").replace(/\s+$/g,""); } })(jQuery);</span>
调用函数:
<span style="font-size:12px;">$("trimTest").val( jQuery.trim(" test ")+"\n"+ jQuery.ltrim(" test ")+"\n"+ jQuery.rtrim(" test ") );</span>
文本框中第一行字符串左右两侧的空格都被删除。
第二行的字符串只有左侧的空格被删除。
第三行的字符串只有右侧的空格被删除。
时间: 2024-10-26 18:18:05