jQuery插件的制作之方法的参数

news/2024/7/11 1:39:06 标签: 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");



http://www.niftyadmin.cn/n/1870030.html

相关文章

另一个视角解读计算机编码-补码编码

这篇文章写得很好&#xff0c;转来供大家分享&#xff01; 数学是一个完全抽象的学科&#xff0c;而计算机是这个学科的一种形象化的实现&#xff0c;显然无法处理一些仅在抽象意义上有意义的特殊”数字“&#xff0c;比如无穷之类的东西。像数学中的加法&#xff0c;乘法这样运…

jQuery插件开发全解析,jQuery.extend , (function($){ , $.fn.pluginName

序&#xff1a;匿名函数&#xff0c;匿名函数没有实际名字&#xff0c;也没有指针&#xff0c;怎么执行滴&#xff1f; 其实大家可以看看小括号的意义就应该可以理解。小括号有返回值&#xff0c;也就是小括号内的函数或者表达式的返回值&#xff0c;所以说小括号内的function返…

JVM 指令集与 X86 等真实cpu指令集的异同

1.函数调用指令集 x86 cpu 函数调用指令集 call ret 主要作用是保存现场和恢复现场&#xff0c;比如 cpu 寄存器压栈和弹栈&#xff1b; jvm 函数调用指令集 invokevirtual invokeinterface invokespecial invokestatic return .. 等等&#xff0c;由于 jvm 没有物理寄存器&a…

$.extend(true,{},a,b),深入理解,小心陷阱

$.extend一般情景下&#xff0c;使用深度拓展两个对象时&#xff0c;我们想要的效果是&#xff0c;b对象覆盖掉a对象中存在的所有属性&#xff0c;没有则新增到a对象中&#xff1b;下面我们看一下我所遇到的问题&#xff1a;我希望通过深度拓展将tmp中的editoption覆盖掉ret中的…

Java 类反汇编命令

可能大家平时用编译命令javac和解释命令java用得比较多&#xff0c;Java类反汇编程序的命令javap用得比较少。我们在命令行窗口先用javap -help看下javap工具支持的选项&#xff1a; D:/test>javap -help Usage: javap <options> <classes>... where options in…

解读 Java Class 文件格式

原文地址&#xff1a;http://blog.csdn.net/tyrone1979/article/details/964560 1&#xff0e;目的 大型软件系统开发时&#xff0c;某些Java组件可能涉及到多种数据库或中间件系统的连接和应用&#xff0c;例如一个数据传递组件需要从DB2中读取数据&#xff0c;并将数据通过…

JAVA重载(overload)和覆盖(override)中的陷阱

大家都知道重载是指在同一个类中,定义了有相同名称但是有不同参数类型的方法时,到底调用那一个方法会根据参数类型来选择.我们来看下面这个例子: class ParentClass { } class ChildClass extends ParentClass{ } public class Test { public void testOverLoad(ParentClass …

最全的jquery datatables api 使用详解

分别导入css和js文件 <link href"~/Content/bootstrap.css" rel"stylesheet" /> <link href"~/Content/datatables/css/dataTables.bootstrap.css" rel"stylesheet" /> 加载 <script type"text/javascript"…