啰嗦一下,很希望各位‘攻城狮’们能和大家一起分享,一起成长。当然,也可以一起吹。哈,不废话,进入正题。JQ是一个非常好用的库,但是在解决自己项目的实际问题中,难免会遇到需要去拓展的方法,需要我们用插件去实现。当然JQ的也制定了官方的拓展规范,小伙伴可以去看一下。
编写原则
1、避免破坏第三方
2、避免产生全局依赖,规范作用域,避免产生代码污染。
3、兼容jQuery操作符’$’和’jQuery’
代码格式
1 | (function ($) {//插件内部代码 })(jQuery); |
扩展插件
1 | jQuery.fn.extend(object) |
扩展jquery 方法,制作插件
闭包限定命名空间
1 | (function ($) { $.fn.extend({ "highLight":function(options){ //do something } }); })(window.jQuery); |
在这里 window.jQuery 与 jQuery 与 $ 三者是一样的 ~!!!~
给插件默认参数,实现 插件的功能
闭包限定命名空间
1 | (function ($) { $.fn.extend({ "highLight": function (options) { var opts = $.extend({}, defaluts, options); |
使用jQuery.extend 覆盖插件默认参数 this.each(function () { //这里的this 就是 jQuery对象
//遍历所有的要高亮的dom,当调用 highLight()插件的是一个集合的时候。
//var $this = $(this);获取当前dom 的 jQuery对象,这里的this是当前循环的dom
//根据参数来设置 dom的样式1
$this.css({ backgroundColor: opts.background, color: opts.foreground }); }); } });
//默认参数1
var defaluts = { foreground: 'red', background: 'yellow' }; })(window.jQuery);
在这儿要说一下 $.extend () 而且是将该option 合并到调用 extend方法 的对象中去.