自定义JQuery插件(附图片轮播banner实现)

作为一个java后台攻城狮,有的时候对自己的想法无法用前端展现出来,总感觉挺遗憾的。所以了解一定的前端知识与主流的前端技术,也是一个后台攻城狮的基本素养。最近刚好做相关学习,就以此为切入点。


JQuery是一个优秀的javascript库,它是可扩展的,自定义插件就是在扩展JQuery库。

直接上代码:

$.fn.pluginName = function(){
    //some codes
}

上面代码定义了一个名称为pluginName的插件。
不过在使用多种javascript库时,$可能会遭遇冲突,为了避免这种情况的发生,我们需要一个包装器。

(function($){
    $.fn.pluginName = function(){
        //some codes
    }
})(JQuery);

就像代码展示的一样,其实这个包装器就是一个匿名函数,将JQuery做为参数调用,将插件包在内部。
这样做的好处就是形成了闭包(闭包会在以后博文中提到),简单来说,形成了作用域的概念,就类似java的私有变量一样,是防止变量污染的有效手段。


是不是有一种java的即视感;)
可是你应该会马上想到,含参的情况怎么办?


Defaults & options

(function($){
    $.fn.say = function(options){
        defaults = {
            message : "Hello World!",
            another : "good"
        };
        var setting = $.extend(defaults,options);
        alert(setting.message);
        alert(setting.another);
    }
})(JQuery);
<div id="test"></div>
$('#test').say({another:"better"});

如上面代码展现的一样,options作为参数传入,defaults则可以为参数设定一个初始s值。$.extend(defaults,options)的作用是将参数赋值给defaults。运行代码可以看到,弹出框显示的内容是Hello World!better,而不是good


关于扩展JQuery自定义插件,了解javascript的prototype是必须的。

在javascript中,每个对象都有prototype属性,称为对象类型原型的引用。

事实上$.fn就是在使用prototype,这点需要明白,而prototype需要另外详细讨论与学习的了,这里暂不叙述。

最后,放上一个图片轮播banner的实现,Chrome与IE8+测试可用(这里作为demo兼容了IE,不过说实在的,作为有节操的程序猿,还是放弃IE吧; )

图片轮播banner_demo

github:Jquery_plugin_banner_demo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值