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

本文实例讲述了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程序设计有所帮助。

(0)

相关推荐

  • JQuery插件jcarousellite的参数中文说明

    参数说明: btnPrev     string 上一个按钮的class名, 比如  btnPrev: ".prev" btnNext     string 下一个按钮的class名, 比如  btnPrev: ".prev" btnGo       array  自定义滚动位置,类似幻灯片效果置,有选项卡,按照数组顺序,依次为按钮1按钮2按钮N,如以下,class名为1的按钮是第一个按钮:[".1", ".2"] mouse

  • Jquery图形报表插件 jqplot简介及参数详解

    功能概述: 有多种图表样式可供选择 可以自定义日期轴线 可设置旋转轴文字 自动计算趋势线 工具条提示和高亮数据点 默认最优设置,非常易于使用 以上功能在jqPlot主页中的示例页面有 很多直观的展示.这里是它详细使用文档. 缺点:柱状图无法显示具体数据值.饼状图无法显示具体百分比. 下边是搜集的详细参数配置: 复制代码 代码如下: options = { seriesColors: [ "#4bb2c5", "#c5b47f", "#EAA228"

  • jquery插件制作简单示例说明

    一.先从一个简单的实例,不需要带参数的一个方法开始 复制代码 代码如下: //创建一个匿名函数 (function($){ //给jQuery附加一个新的方法(详细见备注1) $.fn.extend({ //插件的名字 MyFirstName: function() { //迭代当前匹配元素集合 return this.each(function() { var obj = $(this); //自己的代码 }); } }); )(jQuery); 备注1:理解$.fn.extend和$.ext

  • jquery tab插件制作实现代码

    jquery插件的基本格式: 复制代码 代码如下: (function($){ $.fn.tab = function(options){//$.fn后面的tab是这个插件的函数名称.可以更具自己喜好进行修改 var defaults = { //相关属性设置 } var options = $.extend(defaults, options); this.each(function(){ //实现的功能设置 }); }; })(jQuery); 我这里是做一个tab的插件,我来完善以上代码

  • jquery插件制作 提示框插件实现代码

    我们首先来介绍自定义选择器的开发,他的代码结构如下: 复制代码 代码如下: (function ($) { $.expr[':'].customselector = function (object,index,properties,list) { //code }; })(jQuery); 调用时候的写法: $(a:customselector) 现在我们先解释下函数中所使用到的各个参数. object:当前dom元素的引用,而不是jquery对象.需要强调的一点,dom元素和jquery对象

  • JQuery扩展插件Validate 3通过参数设置错误信息

    最终显示在页面上的错误分为两种:第一种是默认错误信息,该信息已经被定义在插件中了,可以手动修改. 第二种是通过参数指定的错误信息,如果没有指定则会使用默认的错误信息.将上个示例的js修改如下: 复制代码 代码如下: <script type="text/javascript"> $(function() { $("#signupForm").validate( //在上例中新增的部分 { rules: { txtPassword1: "requ

  • idTabs基于JQuery的根据URL参数选择Tab插件

    为了做这件事,除了jquery库和idTabs插件,我们还需要下载一个用来搞URL的插件:jquery.url.js,传送门:https://github.com/allmarkedup/jQuery-URL-Parser (上述链接可能有错,如不能使用,可以到这里下载) 我们提供idtabs打包下载 http://www.jb51.net/jiaoben/43086.htmlTab菜单的HTML代码这样写,每个tab的div自己搞定,不发出来浪费页面了: 复制代码 代码如下: <div cla

  • jQuery 获取URL参数的插件

    例如 当前你的URL是: http://www.jb51.net/index.php?test=1&kk=2 如果想获取test,则可以引入插件后, 用如下方法获取: var test = $.query.get('test'); 如果参数有多个相同的名称 ,则可以这样: var arr = $.query.get('testy'); 输出: [ 值1 , 值2, 值3...] 如果要获取多个相同名称中的某一个,可以这样: var arrayElement = $.query.get('test

  • jQuery获取地址栏参数插件(模仿C#)

    复制代码 代码如下: $.request = (function () { var apiMap = {}; function request(queryStr) { var api = {}; if (apiMap[queryStr]) { return apiMap[queryStr]; } api.queryString = (function () { var urlParams = {}; var e, d = function (s) { return decodeURICompon

  • jQuery插件制作之全局函数用法实例

    本文实例讲述了jQuery插件制作之全局函数用法.分享给大家供大家参考.具体分析如下: 1.添加新的全局函数 所谓的全局函数,实际上就是jQuery对象的方法,但从实践的角度上看,他们是位于jQuery命名空间内部的函数 (1)添加一个函数,只需要将新函数指定为jQuery对象的一个属性. jQuery.five =function(){ alert("直接继承方式不一样"); } 调用: 复制代码 代码如下: $.five(); (2)添加多个函数 jQuery.five =func

随机推荐