jquery是个好东西,但他不是万能的,总有时要自已编写插件的时候,现在我就以一个例子来说明一个简单的插件的编写过程。
首先是需求,我这个插件是为了把一个div中的所有的form控件的值输出为一个object和用一个object设置form控件的值。
在需求中,我们主要是提供两个方法$("#id").getJosnObject()和$("#id").setJosnObject(obj),根据这些我写了搭了个架子,如下
首先是需求,我这个插件是为了把一个div中的所有的form控件的值输出为一个object和用一个object设置form控件的值。
在需求中,我们主要是提供两个方法$("#id").getJosnObject()和$("#id").setJosnObject(obj),根据这些我写了搭了个架子,如下
(function($){
$.gl = $.gl || {};
$.fn.getJosnObject = function(){
$.gl.pannel.getInstance(this).get();
};
$.fn.setJosnObject = function(json){
$.gl.pannel.getInstance(this).set();
};
$.gl.pannel = function(el){
this.get = function(){
};
this.set = function(){
};
var element = el;
$.data(element, 'gl-pannel', this);
}
$.gl.pannel.getInstance = function(el){
var pannel = $.data(el, "gl-pannel");
if(!pannel)
pannel = new $.gl.pannel(el);
return pannel;
};
})(jQuery);
在这段代码里大家可以看到,getJosnObject和setJosnObject的JQuery扩展方式,$.gl.pannel是处理需求的类。$.data(this.element, "ui-dialog", this); 这是为了让jquery catch住这个对象。这样,在相同id的jquery对象,只存在一个实例。
基本上,上面就是一个可以工作的jquery插件了,现在,我们只要对编写需求处理类,就可以了。这个我就不多说了,因为这个已经不是重点,如果你有需要,可以在附件中找到代码。