jQuery技术

jQuery插件开发全解析(2)

字号+ 作者:H5之家 来源:H5之家 2015-10-27 12:30 我要评论( )

// plugin definition $.fn.hilight = function(options) { var defaults = { foreground: 'red', background: 'yellow' }; // Extend our default options with those provided. var opts = $.extend(defaults, op

  • // plugin definition   
  • $.fn.hilight = function(options) {   
  •   var defaults = {   
  •     foreground: 'red',   
  •     background: 'yellow'   
  •   };   
  •   // Extend our default options with those provided.   
  •   var opts = $.extend(defaults, options);   
  •   // Our plugin implementation code goes here.   
  • };   
  • 我们的插件可以这样被调用:  
  • $('#myDiv').hilight({   
  •   foreground: 'blue'   
  • });     

    复制代码


      2.3 暴露插件的默认设置

      我们应该对上面代码的一种改进是暴露插件的默认设置。这对于让插件的使用者更容易用较少的代码覆盖和修改插件。接下来我们开始利用函数对象。

  • // plugin definition   
  • $.fn.hilight = function(options) {   
  •   // Extend our default options with those provided.   
  •   // Note that the first arg to extend is an empty object -   
  •   // this is to keep from overriding our "defaults" object.   
  •   var opts = $.extend({}, $.fn.hilight.defaults, options);   
  •   // Our plugin implementation code goes here.   
  • };   
  • // plugin defaults - added as a property on our plugin function   
  • $.fn.hilight.defaults = {   
  •   foreground: 'red',   
  •   background: 'yellow'   
  • };     
  • 现在使用者可以包含像这样的一行在他们的脚本里:  
  • //这个只需要调用一次,且不一定要在ready块中调用  
  • $.fn.hilight.defaults.foreground = 'blue';   
  • 接下来我们可以像这样使用插件的方法,结果它设置蓝色的前景色:  
  • $('#myDiv').hilight();   

    复制代码


      如你所见,我们允许使用者写一行代码在插件的默认前景色。而且使用者仍然在需要的时候可以有选择的覆盖这些新的默认值:

  • // 覆盖插件缺省的背景颜色
  • $.fn.hilight.defaults.foreground = 'blue';
  • // ...
  • // 使用一个新的缺省设置调用插件
  • $('.hilightDiv').hilight();
  • // ...
  • // 通过传递配置参数给插件方法来覆盖缺省设置
  • $('#green').hilight({
  •   foreground: 'green'
  • });  

    复制代码


      2.4 适当的暴露一些函数

      这段将会一步一步对前面那段代码通过有意思的方法扩展你的插件(同时让其他人扩展你的插件)。例如,我们插件的实现里面可以定义一个名叫"format"的函数来格式化高亮文本。我们的插件现在看起来像这样,默认的format方法的实现部分在hiligth函数下面。

  • // plugin definition   
  • $.fn.hilight = function(options) {   
  •   // iterate and reformat each matched element   
  •   return this.each(function() {   
  •     var $this = $(this);   
  •     // ...   
  •     var markup = $this.html();   
  •     // call our format function   
  •     markup = $.fn.hilight.format(markup);   
  •     $this.html(markup);   
  •   });   
  • };   
  • // define our format function   
  • $.fn.hilight.format = function(txt) {   
  • return '<strong>' + txt + '</strong>';   
  • };     

    复制代码


      我们很容易的支持options对象中的其他的属性通过允许一个回调函数来覆盖默认的设置。这是另外一个出色的方法来修改你的插件。这里展示的技巧是进一步有效的暴露format函数进而让他能被重新定义。通过这技巧,是其他人能够传递他们自己设置来覆盖你的插件,换句话说,这样其他人也能够为你的插件写插件。

      考虑到这个篇文章中我们建立的无用的插件,你也许想知道究竟什么时候这些会有用。一个真实的例子是Cycle插件.这个Cycle插件是一个滑动显示插件,他能支持许多内部变换作用到滚动,滑动,渐变消失等。但是实际上,没有办法定义也许会应用到滑动变化上每种类型的效果。那是这种扩展性有用的地方。 Cycle插件对使用者暴露"transitions"对象,使他们添加自己变换定义。插件中定义就像这样:

     

  • 1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • 7个有用的jQuery小技巧

      7个有用的jQuery小技巧

      2016-02-26 13:02

    • 全面详细的jQuery常见开发技巧手册

      全面详细的jQuery常见开发技巧手册

      2016-02-26 10:02

    • jQuery Touchwipe Plugin 轻量级的手机触摸特效插件(javascript

      jQuery Touchwipe Plugin 轻量级的手机触摸特效插件(javascript

      2016-02-16 17:04

    • javascript与jQuery的那些事

      javascript与jQuery的那些事

      2016-01-19 12:01

    网友点评
    n