1.Guideline:http://docs.jquery.com/Plugins/Authoring
2.Example:http://www.learningjquery.com/2007/10/a-plugin-development-pattern
3.重点:
a)inside plugin function , "this" is jQuery Object, not DOM element
b)should implement each method.
code example:
this.each(function(){
//xxx
this; // "this" is DOM element.
});
c) using alias "$"
code example :
(function($){
//you can use $(selector) at here now
})(jQuery);
see my example for resizeImageByScale:
1 /**
2 * --------------------------------------------------------------------
3 * jQuery-Plugin "resizeImage"
4 * Version: 1.0, 20/07/2009
5 * by Daniel <nevernet@msn.com>
6 *
7 * --------------------------------------------------------------------
8 * @example jQuery("#imagesId").resizeImageByScale({ "maxWidth": 410, "maxHeight": 248 });
9 * @desc resize all images size
10 *
11 * --------------------------------------------------------------------
12 */
13 (function($) {
14 $.fn.resizeImageByScale = function(options) {
15 var defaults = { "maxWidth": 100, "maxHeight": 100 };
16
17 $.extend(defaults, options);
18
19 return this.each(function() {
20 var obj = $(this);
21 var t = new Image();
22 $(t).load(function() {
23 var t1 = this; //DOM element
24 var toheight = defaults.maxHeight;
25 var towidth = defaults.maxWidth;
26
27 var aWidth = Math.round((t1.width / towidth) * 10000);
28 var aHeight = Math.round((t1.height / toheight) * 10000);
29
30 if (aWidth < aHeight) {
31 toheight = defaults.maxHeight;
32 towidth = Math.round(t1.width * defaults.maxHeight / t1.height);
33 }
34 else {
35 towidth = defaults.maxWidth;
36 toheight = Math.round(t1.height * defaults.maxWidth / t1.width);
37 }
38
39 obj.css({ "width": towidth, "height": toheight });
40 }).attr("src", obj.attr("src"));
41 });
42 }
43 })(jQuery);
原文地址: http://www.cnblogs.com/nevernet/archive/2009/07/20/1527103.html