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

 更新时间:2009年09月03日 02:10:54   作者:  
我将会在下面的例子中一个一个的说明上面这几个条件,做完这些事情后我们就会创建一个高亮显示text的简单插件。

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的主函数。例如:

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

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

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

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

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

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);

相关文章

  • jQuery使用正则验证15/18身份证的方法示例

    jQuery使用正则验证15/18身份证的方法示例

    这篇文章主要介绍了jQuery使用正则验证15/18身份证的方法,涉及jQuery基于正则进行数字字符串验证相关操作技巧,需要的朋友可以参考下
    2017-04-04
  • jQuery实现设置、移除文本框默认值功能

    jQuery实现设置、移除文本框默认值功能

    这篇文章主要介绍了jQuery实现设置、移除文本框默认值功能,本文实现是类似html5 placeholder(空白提示)效果,正常时文本框有提示文字,当文本框获得焦点时变为空白,需要的朋友可以参考下
    2015-01-01
  • 30个最好的jQuery 灯箱插件分享

    30个最好的jQuery 灯箱插件分享

    下面介绍30个最好的jQuery Lightbox 插件,别忘了收藏它,以防未来的设计中错过它们中的一个。
    2011-04-04
  • jQuery简单实现仿京东商城的左侧菜单效果代码

    jQuery简单实现仿京东商城的左侧菜单效果代码

    这篇文章主要介绍了jQuery简单实现仿京东商城的左侧菜单效果代码,通过简单的jQuery鼠标事件及元素动态变换实现样式动态切换功能,非常简单实用,需要的朋友可以参考下
    2015-09-09
  • jQuery插件开发基础简单介绍

    jQuery插件开发基础简单介绍

    jquery插件开发基础:开发jQuery 插件的基本格式,开发全局函数的基本格式,接下来为您详细介绍,感兴趣的朋友可以了解哦
    2013-01-01
  • 解决ajax不能访问本地文件问题(利用js跨域原理)

    解决ajax不能访问本地文件问题(利用js跨域原理)

    本篇文章主要介绍了解决ajax不能访问本地文件问题(利用js跨域原理),具有一定的参考价值,有兴趣的可以了解一下。
    2017-01-01
  • jquery取消事件冒泡的三种方法(推荐)

    jquery取消事件冒泡的三种方法(推荐)

    下面小编就为大家带来一篇jquery取消事件冒泡的三种方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • layui弹出层效果实现代码

    layui弹出层效果实现代码

    layer是一款近年来备受青睐的web弹层组件,这篇文章主要介绍了layui弹出层效果的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • JQuery标签页效果实例详解

    JQuery标签页效果实例详解

    这篇文章主要介绍了JQuery标签页效果,结合实例形式较为详细的分析了jQuery响应鼠标事件动态遍历及切换标签页的技巧,需要的朋友可以参考下
    2015-12-12
  • 终于实现了!精彩的jquery弹幕效果

    终于实现了!精彩的jquery弹幕效果

    终于实现精彩的jquery弹幕效果了,这篇文章就为大家详细介绍了jquery弹幕效果的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-07-07

最新评论