http://www.jianshu.com/p/518d424d4994
我们先看个例子:$("a").css("color","red")。我们知道每个jQuery对象都会包含jQuery中定义的DOM操作方法,这里使用$方法来选择a元素,返回一个a元素的jQuery对象,这个对象就可以使用jQuery中定义的DOM操作方法。那么jQuery对象是如何获取这些方法的呢?其实jQuery内部定义了一个jQuery.fn对象,查看jQuery源码可以发现jQuery.fn=jQuery.prototype,也就是说jQuery.fn对象是jQuery的原型对象,jQuery的DOM操作方法都在jQuery.fn对象上定义的,然后jQuery对象就可以通过原型继承这些方法。
基础版jQuery插件
知道了上面这些知识,我们就可以来写一个简单的jQuery插件。假如我现在需要一个jQuery插件用来改变标签内容颜色,就可以按下面的方式来实现这个插件:
$.fn.changeStyle =function(colorStr){this.css("color",colorStr);}
满足链式调用的jQuery插件
满足链式调用的jQuery插件
链式调用时jQuery的一大特色,一个通用的插件应该遵循jQuery风格,满足链式调用要求。实现链式调用的方式也很简单:
$.fn.changeStyle =function(colorStr){this.css("color",colorStr);returnthis;}
然后使用的时候就可以链式调用其他方法了:
$("p").changeStyle("red").addClass("red-color");
保护好默认参数
注意到上面代码调用extend时会将defaults的值改变,这样不好,因为它作为插件因有的一些东西应该维持原样,另外就是如果你在后续代码中还要使用这些默认值的话,当你再次访问它时它已经被用户传进来的参数更改了。
var settings = $.extend({},defaults, options);//将一个空对象做为第一个参数
-------------------------------------------------------------------------------------------------
.$.fn2.全局变量-闭包?构造函数 参照开源代码
2种调用
div上
$('#table').bootstrapTable({})
构造函数 new
amd
cmd
mit
网友评论