jQuery中文入门指南,翻译加实例,jQuery的起点教程

2019-06-03 06:29:31王旭

Plug me:制作自己的插件

写一个自己的jQuery插件是非常容易的,如果你按照下面的原则来做,可以让其他人也容易地结合使用你的插件.

    为你的插件取一个名字,在这个例子里面我们叫它"foobar". 创建一个像这样的文件:jquery.[yourpluginname].js,比如我们创建一个jquery.foobar.js 创建一个或更多的插件方法,使用继承jQuery对象的方式,如:
    jQuery.fn.foobar = function() {
    	// do something
    };
    可选的:创建一个用于帮助说明的函数,如:
    jQuery.fooBar = {
    	height: 5,
    	calculateBar = function() { ... },
    	checkDependencies = function() { ... }
    };

    你现在可以在你的插件中使用这些帮助函数了:

    jQuery.fn.foobar = function() {
    	// do something
    	jQuery.foobar.checkDependencies(value);
    	// do something else
    };
    可选的l:创建一个默认的初始参数配置,这些配置也可以由用户自行设定,如:
    jQuery.fn.foobar = function(options) {
    	var settings = {
    		value: 5,
    		name: "pete",
    		bar: 655
    	};
    	if(options) {
    		jQuery.extend(settings, options);
    	}
    };

    现在可以无需做任何配置地使用插件了,默认的参数在此时生效:

    $("...").foobar();

    或者加入这些参数定义:

    $("...").foobar({
    	value: 123,
    	bar: 9
    });

如果你release你的插件, 你还应该提供一些例子和文档,大部分的插件都具备这些良好的参考文档.

现在你应该有了写一个插件的基础,让我们试着用这些知识写一个自己的插件.

很多人试着控制所有的radio或者checkbox是否被选中,比如:

$("input[@type='checkbox']").each(function() {
	this.checked = true;
	// or, to uncheck
	this.checked = false;
	// or, to toggle
	this.checked = !this.checked;
});

无论何时候,当你的代码出现each时,你应该重写上面的代码来构造一个插件,很直接地:

$.fn.check = function() {
	return this.each(function() {
		this.checked = true;
	});
};

这个插件现在可以这样用:

$("input[@type='checkbox']").check();

现在你应该还可以写出uncheck()和toggleCheck()了.但是先停一下,让我们的插件接收一些参数.

$.fn.check = function(mode) {
	var mode = mode || 'on'; // if mode is undefined, use 'on' as default
	return this.each(function() {
		switch(mode) {
		case 'on':
			this.checked = true;
			break;
		case 'off':
			this.checked = false;
			break;
		case 'toggle':
			this.checked = !this.checked;
			break;
		}
	});
};

这里我们设置了默认的参数,所以将"on"参数省略也是可以的,当然也可以加上"on","off", 或 "toggle",如:

$("input[@type='checkbox']").check();
$("input[@type='checkbox']").check('on');
$("input[@type='checkbox']").check('off');
$("input[@type='checkbox']").check('toggle');

如果有多于一个的参数设置会稍稍有点复杂,在使用时如果只想设置第二个参数,则要在第一个参数位置写入null.