当前位置:嗨网首页>书籍在线阅读

33-解决方案

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

12.8.2 解决方案

为插件添加一个静态方法需要按照添加方法的相同方式扩展jQuery对象。不同之处只是这些函数在调用时不使用jQuery选择器:

;(function($) {
  $.fn.pulse = function(options) {
   //将传入的选项与默认选项合并
   var opts = $.extend({}, $.fn.pulse.defaults, options);
   return this.each(function() {
     // 为特定节点合并元数据元素
     var o = $.metadata ? $.extend({}, opts, $.metadata.get(this)) : opts;
     doPulse($(this),o);
   });
  };
  function doPulse($obj,opts) {
   for(var i = 0;i<opts.pulses;i++) {
     $obj.fadeTo(opts.speed,opts.fadeLow).fadeTo(opts.speed,opts.fadeHigh);
   }
   // 重置为正常值
   $obj.fadeTo(opts.speed,1);
  }
  // 定义添加的基础对象
  $.pulse = {};
   // 静态函数
   $.pulse.impulse = function($obj) {
    var opts = {
    speed: 2500,
    pulses: 10,
    fadeLow: 0.2,
   fadeHigh: 0.8
   };
  doPulse($obj,opts);
  }
  // 静态函数
  $.pulse.warpspeed = function($obj) {
   var opts = {
    speed: 25,
    pulses: 100,
    fadeLow: 0.2,
    fadeHigh: 0.8
   };
   doPulse($obj,opts);
  }
  //跳动插件默认选项
  $.fn.pulse.defaults = {
   speed: "slow",
   pulses: 2,
   fadeLow: 0.2,
   fadeHigh: 1
  };
})(jQuery);

调用插件中的静态方法非常简单,只要显式地传递一个需要操作的有效对象:

// 在第一个返回元素上调用impulse方法
jQuery.pulse.impulse(jQuery('p:first'));
// 在第一个返回元素上调用warpspeed方法
jQuery.pulse.warpspech(jQuery('p:first'));