自己动手手写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 相关文章推荐
javascript下数值型比较难点说明
Jun 07 Javascript
你的 mixin 真的兼容 ECMAScript 5 吗?
Apr 11 Javascript
JavaScript基础语法、dom操作树及document对象
Dec 02 Javascript
JavaScript中的toLocaleLowerCase()方法使用详解
Jun 06 Javascript
原生js实现模拟滚动条
Jun 15 Javascript
详细分析JavaScript变量类型
Jul 08 Javascript
jquery带翻页动画的电子杂志代码分享
Aug 21 Javascript
浅谈如何实现easyui的datebox格式化
Jun 12 Javascript
Vue父组件调用子组件事件方法
Feb 23 Javascript
详解如何创建并发布一个 vue 组件
Nov 08 Javascript
新手快速上手webpack4打包工具的使用详解
Jan 28 Javascript
基于javascript实现放大镜特效
Dec 03 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
推荐几部必看的DC动画电影
2020/03/03 欧美动漫
现磨咖啡骗局!现磨咖啡=新鲜咖啡?现磨咖啡背后的猫腻你不懂!
2019/03/28 冲泡冲煮
备份mysql数据库的php代码(一个表一个文件)
2010/05/28 PHP
模板引擎正则表达式调试小技巧
2011/07/20 PHP
非常有用的9个PHP代码片段
2016/04/06 PHP
javascript 面向对象编程 万物皆对象
2009/09/17 Javascript
JS 对java返回的json格式的数据处理方法
2016/12/05 Javascript
Node.js用readline模块实现输入输出
2016/12/16 Javascript
Vue.js双向绑定实现原理详解
2016/12/22 Javascript
ES6 Symbol数据类型的应用实例分析
2019/06/26 Javascript
详解mpvue实现对苹果X安全区域的适配
2019/07/31 Javascript
Node.js实现简单管理系统
2019/09/23 Javascript
详解vue-template-admin三级路由无法缓存的解决方案
2020/03/10 Javascript
通过实例解析vuejs如何实现调试代码
2020/07/16 Javascript
react实现复选框全选和反选组件效果
2020/08/25 Javascript
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
2015/12/31 Python
Python内置模块logging用法实例分析
2018/02/12 Python
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
2019/05/16 Python
如何在Python中实现goto语句的方法
2019/05/18 Python
Django如何简单快速实现PUT、DELETE方法
2019/07/24 Python
python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)
2019/08/28 Python
python自动结束mysql慢查询会话的实例代码
2019/10/27 Python
pytorch实现MNIST手写体识别
2020/02/14 Python
Python多进程编程multiprocessing代码实例
2020/03/12 Python
详解pandas映射与数据转换
2021/01/22 Python
CSS3 @media的基本用法总结
2019/09/10 HTML / CSS
欧舒丹美国官网:L’Occitane美国
2018/02/23 全球购物
递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
2013/04/28 面试题
AJAX都有哪些有点和缺点
2012/11/03 面试题
财务会计人员求职的自我评价
2014/01/13 职场文书
教育英语专业毕业生的求职信
2014/03/13 职场文书
敬老院院长事迹材料
2014/05/21 职场文书
比赛口号大全
2014/06/10 职场文书
2014年银行员工年终自我评价
2014/09/19 职场文书
羊脂球读书笔记
2015/06/30 职场文书
工伤事故赔偿协议书
2015/08/06 职场文书