jQuery插件制作之参数用法实例分析


Posted in Javascript onJune 01, 2015

本文实例讲述了jQuery插件制作之参数用法。分享给大家供大家参考。具体分析如下:

1、无参数实现文字阴影效果

jQuery.fn.shadow =function(){ 
 return this.each(function(){ 
  var $originalElement = jQuery(this); 
  for(var i = 0;i < 5;i++){ 
   $originalElement.clone() 
   .css({ 
    position :"absolute", 
    left :$originalElement.offset().left + i, 
    top :$originalElement.offset().top + i, 
    margin : 0, 
    zIndex : -1, 
    opacity : 0.1 
   }) 
   .appendTo("body"); 
  } 
 }) 
}

调用的例子:

$("h1").shadow();

2、简单的参数

jQuery.fn.shadow =function(slices,opacity,zIndex){ 
 return this.each(function(){ 
  var $originalElement = jQuery(this); 
  for(var i = 0;i < slices;i++){ 
   $originalElement.clone() 
   .css({ 
    position :"absolute", 
    left :$originalElement.offset().left + i, 
    top :$originalElement.offset().top + i, 
    margin : 0, 
    zIndex : zIndex, 
    opacity : opacity 
   }) 
   .appendTo("body"); 
  } 
 }) 
}

调用的例子:

$("h1").shadow(10,0.1,-1);

3、参数的映射

jQuery.fn.shadow =function(opts){ 
 return this.each(function(){ 
  var $originalElement = jQuery(this); 
  for(var i = 0;i < opts.slices;i++){ 
   $originalElement.clone() 
   .css({ 
    position :"absolute", 
    left :$originalElement.offset().left + i, 
    top : $originalElement.offset().top+ i, 
    margin : 0, 
    zIndex :opts.zIndex, 
    opacity : opts.opacity 
   }) 
   .appendTo("body"); 
  } 
 }) 
}

调用的例子:

$("h1").shadow({

    slices : 5,

    opacity : 0.25,

    zIndex : -1

});

 
4、默认的参数值(这个是最重要的)
jQuery.fn.shadow =function(options){ 
 var defaults = { 
  slices : 5, 
  opacity : 0.1, 
  zIndex : -1 
 }; 
 //options中如果存在defaults中的值,则覆盖defaults中的值 
 var opts = jQuery.extend(defaults,options); 
 return this.each(function(){ 
  var $originalElement = jQuery(this); 
  for(var i = 0;i < opts.slices;i++){ 
   $originalElement.clone() 
   .css({ 
    position :"absolute", 
    left :$originalElement.offset().left + i, 
    top :$originalElement.offset().top + i, 
    margin : 0, 
    zIndex :opts.zIndex, 
    opacity : opts.opacity 
   }) 
   .appendTo("body"); 
  } 
 }) 
}

调用的例子:

$("h1").shadow({

    opacity : 0.05

});

 
5、回调函数
jQuery.fn.shadow =function(options){ 
 var defaults = { 
  slices : 5, 
  opacity : 0.1, 
  zIndex : -1, 
  sliceOffset : function(i){ 
   return {x:i,y:i} 
  } 
 }; 
 //options中如果存在defaults中的值,则覆盖defaults中的值 
 var opts = jQuery.extend(defaults,options); 
 return this.each(function(){ 
  var $originalElement = jQuery(this); 
  for(var i = 0;i < opts.slices;i++){ 
   //调用回调函数 
   var offset = opts.sliceOffset(i); 
   $originalElement.clone() 
   .css({ 
    position :"absolute", 
    left :$originalElement.offset().left + offset.x, 
    top :$originalElement.offset().top + offset.y, 
    margin : 0, 
    zIndex :opts.zIndex, 
    opacity : opts.opacity 
   }) 
   .appendTo("body"); 
  } 
 }) 
}

调用的例子:

$("h1").shadow({

    sliceOffset : function(i){

       return {x : -i,y : -2 * i}

    }

});

6、可定制的默认值

jQuery.fn.shadow =function(options){ 
 //默认值被放在投影插件的命名空间里了 
 var opts =jQuery.extend({},jQuery.fn.shadow.defaults,options); 
 return this.each(function(){ 
  var $originalElement = jQuery(this); 
  for(var i = 0;i < opts.slices;i++){ 
   //调用回调函数 
   var offset = opts.sliceOffset(i); 
   $originalElement.clone() 
   .css({ 
    position :"absolute", 
    left :$originalElement.offset().left + offset.x, 
    top :$originalElement.offset().top + offset.y, 
    margin : 0, 
    zIndex :opts.zIndex, 
    opacity : opts.opacity 
   }) 
   .appendTo("body"); 
  } 
 }) 
} 
jQuery.fn.shadow.defaults= { 
 slices : 5, 
 opacity : 0.1, 
 zIndex : -1, 
 sliceOffset : function(i){ 
  return { x : i, y : i} 
 } 
}

默认值被放在了命名空间里,可以通过$.fn.shadow.default直接引用。而对$.extend()的调用也必须修改,以适应这种变化。由于现在所有对.shadow()的调用都要重用defaults映射,因此不能让他$.extend()修改它,因此要将一个空映射({})作为$.extend()的第一个参数,让这个新对象成为被修改的目标。

调用方法:

jQuery.fn.shadow.defaults.slices= 10;

$("h1").shadow({

    sliceOffset : function(i){

       return { x : -i, y : i}

    }

});

7、添加选择符表达式

/* 
 *添加选择符表达式 
 * 
 * 参数: 
 *  element:当前的DOM元素,大多数选择符都需要这个 
 *  index:Dom元素在结果集中的索引,这个参数对:eq()和:lt()等选择符比较有用 
 *  matches:包含解析当前选择符的正则表达式结果的数组。通常matches[3]是这个数组中 
 *    唯一有用的项;对于:a(b)形式的选择符而言,matches[3]项中包含着b,即圆括号中的 
 *    文本。 
 *  set:到目前为止匹配的整个DOM元素的集合,这个参数用的比较少。 
 * 
 */ 
jQuery.extend(jQuery.expr[':'],{ 
 'css' : function(element,index,matches,set){ 
  //修改之后的matches[3]:width < 100 
  var parts = matches[3].split(""); 
  var value =parseFloat(jQuery(element).css(parts[0])); 
  switch(parts[1]){ 
   case '<' : 
    return value <parseInt(parts[2]); 
   case '<=' : 
    return value <=parseInt(parts[2]); 
   case '=' : 
   case '==' : 
    return value ==parseInt(parts[2]); 
   case '>=' : 
    return value >= parseInt(parts[2]); 
   case '>' : 
    return value >parseInt(parts[2]);  
  } 
 } 
})

调用:

<divstyle="width: 500px;">Desrunt mollit anim id estlaborum</div>
<divstyle="width: 200px;">2222222</div>
<divstyle="width:30px;">33333333333333333333333</div>
<divstyle="width: 300px;">4444444444444444</div>
$("div:css(width< 100)").addClass("heighlight");

希望本文所述对大家的jQuery程序设计有所帮助。

Javascript 相关文章推荐
window.open()弹出居中的窗口
Feb 01 Javascript
用Javascript 和 CSS 实现脚注(Footnote)效果
Sep 09 Javascript
jquery isType() 类型判断代码
Feb 14 Javascript
jquery获取一组checkbox的值(实例代码)
Nov 04 Javascript
在ASP.NET中使用JavaScript脚本的方法
Nov 12 Javascript
深入探讨JavaScript String对象
Mar 09 Javascript
javascript中clipboardData对象用法详解
May 13 Javascript
js中javascript:void(0) 真正含义
Nov 05 Javascript
jQuery实现悬浮在右上角的网页客服效果代码
Oct 24 Javascript
Javascript编程之继承实例汇总
Nov 28 Javascript
基于JavaScript实现树形下拉框
Aug 10 Javascript
微信小程序实现流程进度的图样式功能
Jan 16 Javascript
jQuery插件制作之全局函数用法实例
Jun 01 #Javascript
javascript实现设置、获取和删除Cookie的方法
Jun 01 #Javascript
jQuery解析XML文件同时动态增加js文件的方法
Jun 01 #Javascript
JS实现兼容各浏览器解析XML文档数据的方法
Jun 01 #Javascript
javascript判断并获取注册表中可信任站点的方法
Jun 01 #Javascript
js事件监听器用法实例详解
Jun 01 #Javascript
JavaScript中isPrototypeOf函数作用和使用实例
Jun 01 #Javascript
You might like
新安装的MySQL数据库需要注意的安全知识
2008/07/30 PHP
字母顺序颠倒而单词顺序不变的php代码
2010/08/08 PHP
PHP中的生成XML文件的4种方法分享
2012/10/06 PHP
php float不四舍五入截取浮点型字符串方法总结
2013/10/28 PHP
php环境套包 dedeampz 伪静态设置示例
2014/03/26 PHP
Chrome Web App开发小结
2014/09/04 PHP
php+mysql删除指定编号员工信息的方法
2015/01/14 PHP
Laravel实现构造函数自动依赖注入的方法
2016/03/16 PHP
PHP ADODB生成下拉列表框功能示例
2018/05/29 PHP
封装html的select标签的js操作实例
2013/07/02 Javascript
js中文逗号转英文实现
2014/02/11 Javascript
7个jQuery最佳实践
2016/01/12 Javascript
基于javascript实现精确到毫秒的倒计时限时抢购
2016/04/17 Javascript
微信小程序 检查接口状态实例详解
2017/06/23 Javascript
vue mintui-Loadmore结合实现下拉刷新和上拉加载示例
2017/10/12 Javascript
AngularJS ui-router刷新子页面路由的方法
2018/07/23 Javascript
vue elementUI tree树形控件获取父节点ID的实例
2018/09/12 Javascript
JS实现的合并两个有序链表算法示例
2019/02/25 Javascript
微信小程序渲染性能调优小结
2019/07/30 Javascript
node-red File读取好保存实例讲解
2019/09/11 Javascript
vue.js实现图书管理功能
2019/09/24 Javascript
让mocha支持ES6模块的方法实现
2020/01/14 Javascript
Python面向对象程序设计之类的定义与继承简单示例
2019/03/18 Python
如何使用python传入不确定个数参数
2020/02/18 Python
Python 操作SQLite数据库的示例
2020/10/16 Python
Python利用matplotlib绘制散点图的新手教程
2020/11/05 Python
W Concept美国:精选全球独立设计师
2017/02/22 全球购物
TALLY WEiJL法国网上商店:服装、时装及配饰
2019/08/31 全球购物
工作过失检讨书
2014/02/23 职场文书
网络工程师自荐书范文
2014/04/01 职场文书
写求职信有哪些注意事项
2014/05/08 职场文书
五年级下册复习计划
2015/01/19 职场文书
学生会部长竞选稿
2015/11/19 职场文书
教育教学工作反思
2016/02/24 职场文书
《悲惨世界》:比天空更广阔的是人的心灵
2020/01/16 职场文书
Apache Linkis 中间件架构及快速安装步骤
2022/03/16 Servers