一步一步教你写一个jQuery的插件教程(Plugin)

2016-02-19 15:10 99 1 收藏

人生本是一个不断学习的过程,在这个过程中,图老师就是你们的好帮手,下面分享的一步一步教你写一个jQuery的插件教程(Plugin)懂设计的网友们快点来了解吧!

【 tulaoshi.com - Web开发 】

jQuery 的plugin开发需要注意的事情,
1. 明确jQuery的命名空间只有一个。
2. 明白options参数用来控制plugin的行为。
3. 为默认的plugin设定提供公共的访问权限。
4. 为子函数提供公共的访问权限。
5. 私有的函数绝对是私有访问
6. 支持metadata plugin。
我将会在下面的例子中一个一个的说明上面这几个条件,做完这些事情后我们就会创建一个高亮显示text的简单插件。

1. 明确jQuery的命名空间只有一个

在我们的例子里,我们将会命名这个插件名字为hilight,

也就是我们的plugin可以通过下面的方法来使用:

为什么jQuery的plugin只有一个命名空间?可能是设计的要求,或者是这样的话可读性更强,亦或是为了面向对象的设计模式。

2.明白options参数来控制plugin的行为。

让我们先为我们的hilight插件明确一下foreground和background的颜色。我们应该能够允许这两个option作为option对象传递给plugin的主函数。例如:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

现在插件能够设定如下的属性:

3. 为默认的plugin设定提供公共的访问权限。

我们这里可以改进一下,就是让上面的代码能够设置能够扩展。这样当使用这个插件的用户能够使用最少的代码重载我们的option。这也就是我们开始使用function对象的好处。

现在用户可以在他们的script中使用一行代码来设置foreground属性:

有了上面的代码我们就可以把某个DOM控件的foregrounf颜色设定为blue了。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

4. 为子函数提供公共的访问权限

这个条款和上面的相仿,能很有趣的让你的Plugin有扩展功能。例如:在lilight的plugin中我们能够定义一个function是format,可以定义hilight的text的形式。我们的plugin代码将会显示如下:

这里我们可以很容易支持另外的一个option对象来通过一个callback 函数来重载默认的formatting。那将会是另外一个不错的支持自定义的方式。

5. 私有的函数绝对是私有访问

公开plugin的一些Option能够被自定义当然是个非常强大的功能。但是你需要考虑哪部分应该被公开,哪部分不应该通过外部访问,否则会破会你已经封装好的结果。

这里debug方法不能从外部访问,因为他在plugin的展现中属于私有的方法。

6.支持metadata plugin。

使用Metadata Plugin需要看你的plugin是什么类型,可能它会使你的插件功能更加强大。个人来说,我比较喜欢metadata plugin是因为它能偶让我的plguin的option通过标记重载。

如果metadata plugin能够成功的封装到我们的插件,那么可以通过下面的标记来使用这个lilight插件。

最终代码如下:

代码如下:
//
// create closure
//
(function($) {
//
// plugin definition
//
$.fn.hilight = function(options) {
debug(this);
// build main options before element iteration
var opts = $.extend({}, $.fn.hilight.defaults, options);
// iterate and reformat each matched element
return this.each(function() {
$this = $(this);
// build element specific options
var o = $.meta ? $.extend({}, opts, $this.data()) : opts;
// update element styles
$this.css({
backgroundColor: o.background,
color: o.foreground
});
var markup = $this.html();
// call our format function
markup = $.fn.hilight.format(markup);
$this.html(markup);
});
};
//
// private function for debugging
//
function debug($obj) {
if (window.console && window.console.log)
window.console.log('hilight selection count: ' + $obj.size());
};
//
// define and expose our format function
//
$.fn.hilight.format = function(txt) {
return 'strong' + txt + '/strong';
};
//
// plugin defaults
//
$.fn.hilight.defaults = {
foreground: 'red',
background: 'yellow'
};
//
// end of closure
//
})(jQuery);

来源:https://www.tulaoshi.com/n/20160219/1609083.html

延伸阅读
     MRTG(MultiRouter Traffic Grapher, MRTG)是基于SNMP的典型网络流量统计分析工具。它耗用的系统资源很小,因此有很多外挂的程序也依附在MRTG下。它通过SNMP协议从设备得到其流量信息,并将流量负载以包含JPEG格式图形的HTML文档的方式显示给用户,以非常直观的形式显示流量负载。 一:安装网络流量监视[默认5分钟...
  文/小军 JScript小知识:JScript是一种解释型的、基于对象的脚本语言。尽管与C++这样成熟的面向对象的语言相比,JScript的功能要弱一些,但对于它的预期用途而言,JScript的功能已经足够大了。JScript程序是语句的集合,一条Jscript语句相当于英语中的一个完整句。Jscript语句将表达式组合起来,完成一个任务。一条语句由一个...
标签: 营养价值
随着生活压力的日趋增长,不知不觉中人们在饮食上已经跟不上身体所需要的营养成分了,才导致人贫血。不管贫血的原因是什么,只要选择好补血的食物就可以。想知道贫血食谱或贫血该吃什么吗?那就一起来看看吧。 补血养颜汤 材料 美国大杏仁15颗,桂圆8颗,红枣12颗,枸杞约30粒左右,红糖1汤匙15克,清水1000毫升(1升)...
标签: 服务器
一步一步学硬盘分区及大小调整 新买回来的硬盘相当于一张白纸,而为了能够更好地使用它,我们要在白纸上划分出若干小块,然后打上格子。如此一来,用户在白纸上写字或作画时,不仅有条有理,而且可以充分利用资源。今天,阿King为大家带来的学习计划就是对硬盘进行划分即打格子的操作,也就是通常所说的硬盘分区和调整分区。本次的主角就...
一步步教你拍出漂亮银河   常常有同学问到有没有一些简单方法去拍出漂亮银河,这里有一些步骤,希望可以帮到各位拍摄出想要的效果! 要拍出漂亮银河的先决条件便是最好于天空没有月亮的时候,和介乎日落后2小时及日出前2小时之间拍摄,以下为一些步骤。 步骤: 把相机架在三脚架。 你有快门线可以使用,若果没...

经验教程

199

收藏

65
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部