插件的理解。$.extend()与$.fn.extend()
    插件开发包括两种:1.类级别的插件开发,即$.extend()扩展jquery对象本身;2.对象级别的插件开发,即$.fn.extend()扩展jquery元素集来提供新的方法。
    1.类级别的插件开发
        1.(function($){
                $.extend({
                    hello:function(){alert("hello world");},
                    world:function(){alert(hello world);}
                })
          })(jQuery)
          调用:$.hello(),$.world()
        2.采用命名空间
          (function($){
                $.myExtend({
                    hello:function(){alert("hello world");},
                    world:function(){alert(hello world);}
                })
          })(jQuery)
          调用:$.myExtend.hello(),$.myExtend.world()
    2.对象级别的插件开发
        1.(function($){
                $.fn.extend({
                    myAnimate:function(){}
                })
           })(jQuery)
           调用:$("#myAnimate").myAnimate()
        2.(function($){
                $.fn.myAnimate=function(){}
          })(jQuery)
          调用:$("#myAnimate").myAnimate()
    3.$.extend()有两种用法
        一种是扩展方法,如上述所示。
        另一种是合并对象获得一个新的对象,$([deep],target,options,defaluts,...),
        例如:
        var settings={validate:false,limit:5,name:"sm"};
        var defaults={validate:true,limit:2}
        var settings=$.extend(settings,defaults);
        结果:settings={validate:true,limit:2,name:"sm"}
        var empty={};
        var options={validate:false,limit:5,name:"sm"};
        var defaults={validate:true,limit:2}
        var settings=$.extend(empty,options,defaults);
        结果:settings={validate:true,limit:2,name:"sm"};
        deep可以为ture或false
        var result={true,{},name:"a",num:3,location:{city:"H",county:"A"},location:{state:"D",county:"CH"}}
        结果:result={name:"a",num:3,location:{city:"H",state:"D",county:"CH"}}
        var result={false,{},name:"a",num:3,location:{city:"H",county:"A"},location:{state:"D",county:"CH"}}
        结果:result={name:"a",num:3,location:{state:"D",county:"CH"}}
    4.匿名函数(最大的用途是创建闭包)
        例如:(function($){})(jQuery)等价于!function(){}(jQuery)<这个用在bootstrp框架中>

  5.回到顶部的例子

(function($){
    $.extend({
        myScrollUp:function(options){
            var defaults={
                    scrollName:"scrollUp",
                    topDistance:"300",
                    topSpeed:300,
                    animation:"slide",
                    animationInSpeed:200,
                    animationOutSpeed:200,
                    scrollText:"回到顶部",
                    activeOverlay:false
                }
            var defaults=$.extend(defaults,options);
            var sn="#"+defaults.scrollName,
                td=defaults.topDistance,
                ts=defaults.topSpeed,
                an=defaults.animation,
                is=defaults.animationInSpeed,
                os=defaults.animationOutSpeed,
                st=defaults.scrollText,
                ao=defaults.activeOverlay;
            $("<a/>",{id:defaults.scrollName,title:st,text:st,herf:"#top"}).appendTo("body");
            $(sn).css({"position":"fixed","display":"none","z-index":"123456789"});
            if(ao)
            {
                $("body").append("<div id='"+defaults.scrollName+"-active'></div>");
                $(sn+"-active").css({"position":"absolute","top":td+"px","width":"100%","border-top":"1px dotted "+ao,"z-index":"2147483647"})
            }
            $(window).scroll(function(){
                if(an==="fade")
                    $($(window).scrollTop()>td?$(sn).fadeIn(is):$(sn).fadeOut(os));
                else if(an==="slide")
                    $($(window).scrollTop()>td?$(sn).slideDown(is):$(sn).slideUp(os));
                else
                    $($(window).scrollTop()>td?$(sn).show():$(sn).hide());
            });
            $(sn).click(function(event){
                $("html, body").animate({scrollTop:0},ts);
                return false
            })
        }
    })
})(jQuery);

插件的理解$.extend()与$.fn.extend()的更多相关文章

  1. jQuery extend() & jQuery.fn.extend(),插件编写

    资料来源:网上资料整理并自行改编测试.复制以下代码并依赖jquery.js,jquery.validate.js即可执行.有误之处,请@我啊,敬请赐教. <!DOCTYPE html PUBLI ...

  2. jQuery开发自定义插件 $.extend()与$.fn.extend()

    jQuery extend()和jQuery.fn.extend() jQuery提供两个用于封装扩展的方法: 1.$.extend(); 扩展jQuery类方法,即jQuery全局方法 (在全局可直 ...

  3. jQuery的extend和fn.extend理解

    参考网址:http://www.cnblogs.com/yuanyuan/archive/2011/02/23/1963287.html http://www.cnblogs.com/xuxiuyu/ ...

  4. $.extend()和$.fn.extend()用法和区别

    $.extend()和$.fn.extend()用法和区别: 在自己制作插件的时候会经常用到$.extend()和$.fn.extend()两个函数,无论从外观还是作用都非常的类似,但是实际上它们的区 ...

  5. $.extend(),与$.fn.extend() 讲解

    $.extend(),与$.fn.extend() 讲解(一) (2013-07-11 10:24:31) 转载▼ 转自:http://blog.sina.com.cn/s/blog_a3bd3bd0 ...

  6. jQuery.fn和jQuery.prototype jquery.extend() jquery.fn.extend()区别介绍

    这里的 jQuery , jQuery.fn , jQuery,fn,init ,jQuery,prototype 都代表什么. 来看下jQuery的源码是怎么样定义的: (function( win ...

  7. jQuery中,$.extend,$obj.extend和$.fn.extend三者的区别

    jQuery中,$.extend,$obj.extend和$.fn.extend三者的区别 现在做的一个项目,所使用的框架是基于jQuery扩展的,于是平时学了一下jQuery,了解到了它的扩展函数: ...

  8. 理解jQuery的$.extend与$.fn.extend

    https://www.cnblogs.com/xuxiuyu/p/5989743.html 上面这篇博客总结的很棒!!,以下对自己的认识做一个总结 <!DOCTYPE html> < ...

  9. $.extend与$.fn.extend()

    很多情况下,用户需要对jQuery插件进行二次开发,那么我们来看看JQ原开发者为我们提供的两种扩展插件的方式如下: 1.类别类:相当于为jquery扩展一个类,比如现在我要扩展一个简单的想加的功能函数 ...

随机推荐

  1. WDCP控制面板的常用liunx命令集

    WDCP是在linux下的一款常用的服务器可视化管理面板,是新手使用linux搭建网站的福音.本文不过多的介绍WDCP是什么,如果需要了解的话,可以至WDCP官方介绍页面查看. 今天博主准备查看网站系 ...

  2. 安卓handler.post问题

    protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentV ...

  3. CPLD的发展及趋势简介

    很多板子上,都看到过有CPLD的芯片,如我见过的一个R232电平转换小板上面就用的EPM240T控制器. 当时看到很奇怪,干啥用的,后来想想,232所需的电平不就是由EPM240T提供的嘛.想明白后就 ...

  4. [LeetCode 121] - 买入与卖出股票的最佳时机(Best Time to Buy and Sell Stock)

    问题 假设你有一个数组,其中的第i个元素表示一只股票在第i天的价格. 如果只允许你完成一次交易(即买入并卖出股票一次),设计一个找出最大利润的算法. 初始思路 和122一样,基于买入与卖出股票的最佳时 ...

  5. 目测ZIP的压缩率

    对word文件,能压到25% 对PDF文件,却只有90% 对压缩文件本身再压缩,几乎没有效果. 考虑到用户一般情况下只有正常的文档,取中位值66%是比较正常的情况,特别是在预估原文件大小的时候.

  6. Jquery回车键切换焦点方法(兼容各大浏览器)

    做项目时,客户要求能够用enter回车直接切换输入(焦点),当最后一个时候,直接提交信息. 第一想法就是,网上去copy一段代码直接用.但了百度.谷歌找了个遍,找到的代码80%以上都是一样的.有的代码 ...

  7. struct2(六) 为表单添加验证

    简介 为表单添加验证 添加校验的方法: 1. first name 不能为null 2. Email address 不能为null 3. age 必须大于18岁 为了在用户提交的时候,能够校验这个表 ...

  8. wikioi1082【线段树练习 3 】

    题目描述 Description 给你N个数,有两种操作: 1:给区间[a,b]的所有数增加X 2:询问区间[a,b]的数的和. 输入描述 Input Description 第一行一个正整数n,接下 ...

  9. 图论:2-SAT模板

    #include<cstdio> #include<vector> #include<cstring> using namespace std; const int ...

  10. 如何从Linux系统中获取带宽、流量网络数据

    引入 国外的云主机厂商,例如AWS提供的网络数据是以流量为单位的,例如下面的图片: 从上图来看,其取值方式为 每隔5分钟取值1次,(每次)每个点显示为1分钟内的流量字节数(Bytes) 带宽与流量 我 ...