自己动手手写jQuery插件总结


Posted in Javascript onJanuary 20, 2015

jQuery是继Prototype之后的又一款优秀的JavaScript框架,深受广大开发者热爱,用户甚广。而jQuery一个很好的地方在 于用户的自定义,即我们可以书写自己的插件来完善jQuery的各项功能,定制自己所需要的功能,剔除冗余的代码,在页面加载时候可以有一定程度上的提 升。

面试之后,触动很大,就是你要做的是一个了解十项还是精通一项的开发者?于是花了几天时间苦逼的研读jQuery源码,了解了jQuery的事件机制、选择器以及浏览器兼容性是如何做到的等。之后就一直想要书写一款jQuery插件,来简单实现自己的一个小功能。

自己动手手写jQuery插件总结

如上图所示,插件实现的功能是当鼠标位于某个链接其上时候,链接移动,鼠标离开之后,链接归位。

Html核心部分即

<ul id="catagory">  

   <li><a href="#">星期一</a></li>  

   <li><a href="#">星期二</a></li>  

   <li><a href="#">星期三</a></li>  

   <li><a href="#">星期四</a></li>  

</ul>

上面开始时候的功能如果我们单纯只是使用jQuery来实现的话是这样实施:
$(document).ready(function() {   

    $("#catagory a").hover(function() {   

        $(this).animate({ paddingLeft: "20px" }, { queue: false, duration: 500 });   

    }, function() {   

        $(this).animate({ paddingLeft: "0" }, { queue: true, duration: 500 });   

    });   

});

现在,我们将功能封装起来,写成插件plugin.js,然后在HTML文件中外链进来:

(function ($) {   

    $.fn.extend({   

        //插件名称 - paddingList   

        paddingList: function (options) {   

            //参数和默认值   

            var defaults = {   

                animatePadding: 10,   

                hoverColor: "Black"  

            };   

            var options = $.extend(defaults, options);   

            return this.each(function () {   

                var o = options;   

                //将元素集合赋给变量 本例中是 ul对象    

                var obj = $(this);   

                //得到ul中的a对象   

                var items = $("li a", obj);   

  

                //添加hover()事件到a   

             items.hover(function () {   

                    $(this).css("color", o.hoverColor);   

                    //queue false表示不添加到动画队列中   

                    $(this).animate({ paddingLeft: o.animatePadding }, { queue: false, duration: 300 });   

  

                }, function () {   

                    $(this).css("color", "");   

                    $(this).animate({ paddingLeft: "0" }, { queue: true, duration: 300 });   

                });   

  

            });   

        }   

    });   

})(jQuery);

当然,外链plugin之前还需要src最初的jquery库文件。调用插件的方式如下:

$(document).ready(function() {   

    $("#catagory").paddingList({ animatePadding: 30, hoverColor: "Red" });   

});
Javascript 相关文章推荐
JavaScipt基本教程之JavaScript语言的基础
Jan 16 Javascript
jQuery封装的获取Url中的Get参数示例
Nov 26 Javascript
JavaScript实现为指定对象添加多个事件处理程序的方法
Apr 17 Javascript
详解javascript函数的参数
Nov 10 Javascript
Angular2中Bootstrap界面库ng-bootstrap详解
Oct 18 Javascript
JavaScript数组和对象的复制
Mar 21 Javascript
JavaScript数组push方法使用注意事项
Oct 30 Javascript
从setTimeout看js函数执行过程
Dec 19 Javascript
javaScript实现游戏倒计时功能
Nov 17 Javascript
Async/Await替代Promise的6个理由
Jun 15 Javascript
layui使用表格渲染获取行数据的例子
Sep 13 Javascript
javascript简单实现深浅拷贝过程详解
Oct 08 Javascript
JavaScript学习心得之概述
Jan 20 #Javascript
DOM基础教程之使用DOM
Jan 19 #Javascript
DOM基础教程之模型中的模型节点
Jan 19 #Javascript
javascript正则表达式使用replace()替换手机号的方法
Jan 19 #Javascript
javascript正则表达式之search()用法实例
Jan 19 #Javascript
jQuery中delegate()方法用法实例
Jan 19 #Javascript
jQuery中die()方法用法实例
Jan 19 #Javascript
You might like
PHP编码转换
2012/11/05 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
2013/06/20 PHP
使用prototype.js 的时候应该特别注意的几个问题.
2007/04/12 Javascript
JavaScript 利用Cookie记录用户登录信息
2009/12/08 Javascript
jquery select动态加载选择(兼容各种浏览器)
2013/02/01 Javascript
Javascript事件实例详解
2013/11/06 Javascript
js实现点击后将文字或图片复制到剪贴板的方法
2014/08/04 Javascript
JS 使用for循环遍历子节点查找元素
2014/09/06 Javascript
基于javascript实现右下角浮动广告效果
2016/01/08 Javascript
详解AngularJS控制器的使用
2016/03/09 Javascript
使用nodejs爬取前程无忧前端技能排行
2017/05/06 NodeJs
vue中用H5实现文件上传的方法实例代码
2017/05/27 Javascript
vue中element-ui表格缩略图悬浮放大功能的实例代码
2018/06/26 Javascript
精读《Vue3.0 Function API》
2020/05/20 Javascript
[01:06:26]全国守擂赛第二周 Team Coach vs DeMonsTer
2020/04/28 DOTA
Python3.x中自定义比较函数
2015/04/24 Python
python3.4用循环往mysql5.7中写数据并输出的实现方法
2017/06/20 Python
解决Python print 输出文本显示 gbk 编码错误问题
2018/07/13 Python
python 3.6.5 安装配置方法图文教程
2018/09/18 Python
python实现beta分布概率密度函数的方法
2019/07/08 Python
pandas按行按列遍历Dataframe的几种方式
2019/10/23 Python
Python中类似于jquery的pyquery库用法分析
2019/12/02 Python
完美解决jupyter由于无法import新包的问题
2020/05/26 Python
基于Python制作一副扑克牌过程详解
2020/10/19 Python
python获得命令行输入的参数的两种方式
2020/11/02 Python
python中doctest库实例用法
2020/12/31 Python
美国旅游网站:Tours4Fun
2017/02/17 全球购物
南京某公司笔试题
2013/01/27 面试题
应届生财务会计求职信
2013/11/05 职场文书
幼儿园园长岗位职责
2013/11/26 职场文书
麦当劳辞职信范文
2014/01/18 职场文书
《母亲的恩情》教学反思
2014/02/13 职场文书
行政副总岗位职责
2014/02/23 职场文书
数学高效课堂实施方案
2014/03/29 职场文书
JavaScript事件的委托(代理)的用法示例详解
2022/02/18 Javascript
vue实力踩坑之push当前页无效
2022/04/10 Vue.js