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

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

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

  ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

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、简单的参数

  ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

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、参数的映射

  ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

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、默认的参数值(这个是最重要的)

  ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

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、回调函数

  ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

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、可定制的默认值

  ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

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、添加选择符表达式

  ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

/*
*添加选择符表达式
*
* 参数:
* 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]);
}
}
})

  调用:

  ?

1
2
3
4

<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程序设计有所帮助。

时间: 2024-08-04 07:39:57

jQuery插件制作之参数用法实例分析的相关文章

jQuery插件制作之参数用法实例分析_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 :$ori

jQuery插件kinMaxShow扩展效果用法实例_jquery

本文实例讲述了jQuery插件kinMaxShow扩展效果用法.分享给大家供大家参考.具体分析如下: 支付宝首页的焦点图就是用的kinMaxShow 扩展效果(前段时间支付宝使用的,不知道现在还是不是这种,另外支付宝的这个焦点图动画效果是分浏览器的,IE8及以下浏览器无动画纯静态,只是在谷歌.火狐等现代浏览器才会出现动画.) 这只是kinMaxShow扩展的一个小例子,更多效果你可以自己发挥. 代码如下: javascript 代码: <script src="js/jquery-1.10

jquery siblings获取同辈元素用法实例分析_jquery

本文实例讲述了jquery siblings获取同辈元素用法.分享给大家供大家参考,具体如下: jquery siblings 用于获得匹配集合中每个元素的同胞. 语法: .siblings(selector) 注:可以通过后面的可选参数选择器(selector)进行进一步筛选. 示例: 找到每个div的所有同辈元素. <p>Hello</p> <div> <span>www.jb51.net</span> </div> <p&

python动态参数用法实例分析

  本文实例讲述了python动态参数用法.分享给大家供大家参考.具体分析如下: 先来看一段代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 class Person: def __init__(self,*pros,**attrs): self.name = "jeff" self.pros = pros for (key,value) in attrs.items(): stm = "self.%s = /"%s/""% (k

python中sys.argv参数用法实例分析

  本文实例讲述了python中sys.argv参数用法.分享给大家供大家参考.具体分析如下: 在学python的过程中,一直弄不明白sys.argv[]的意思,虽知道是表示命令行参数,但还是有些稀里糊涂的感觉. 今天又好好学习了一把,总算是大彻大悟了. Sys.argv[]是用来获取命令行参数的,sys.argv[0]表示代码本身文件路径,所以参数从1开始,以下两个例子说明: 1.使用sys.argv[]的一简单实例 ? 1 2 import sys,os os.system(sys.argv

JQuery中DOM事件合成用法实例分析_jquery

本文实例讲述了JQuery中DOM事件合成用法.分享给大家供大家参考.具体分析如下: jQuery有两个合成事件--hover()方法和toggle()方法,类似前面讲过的ready()方法,hover()方法和toggle()方法都属于jQuery自定义的方法. hover()方法 hover()方法的语法结构为:hover(enter,leave); hover()方法用于模拟光标悬停事件.当光标移动到元素上时,会触发指定的第1个函数(enter);当光标移出这个元素时,会触发指定的第2个函

javascript与jquery中的this关键字用法实例分析_javascript技巧

本文实例分析了javascript与jquery中的this关键字用法.分享给大家供大家参考,具体如下: this 表示当前的对象,这个当前对象可以是表单,<p>等任何元素 1.javascript中this的用法: JS部分: <script type="text/javascript"> function chimg(obj){ obj.src="./images/2.jpg"; } </script> HTML部分: 复制代

Python中函数的参数定义和可变参数用法实例分析

  本文实例讲述了Python中函数的参数定义和可变参数用法.分享给大家供大家参考.具体如下: 刚学用Python的时候,特别是看一些库的源码时,经常会看到func(*args, **kwargs)这样的函数定义,这个*和**让人有点费解.其实只要把函数参数定义搞清楚了,就不难理解了. 先说说函数定义,我们都知道,下面的代码定义了一个函数funcA ? 1 2 def funcA(): pass 显然,函数funcA没有参数(同时啥也不干:D). 下面这个函数funcB就有两个参数了, ? 1

JQuery中基础过滤选择器用法实例分析_jquery

本文实例讲述了JQuery中基础过滤选择器用法.分享给大家供大家参考.具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <he