自己动手手写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 相关文章推荐
学习ExtJS table布局
Oct 08 Javascript
jQuery 获取浏览器所在的IP地址的小例子
Nov 08 Javascript
jQuery实现鼠标滑过Div层背景变颜色的方法
Feb 17 Javascript
JS实现很酷的水波文字特效实例
Feb 26 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
Aug 06 Javascript
详解JavaScript中的4种类型识别方法
Sep 14 Javascript
jQuery.Callbacks()回调函数队列用法详解
Jun 14 Javascript
浅谈js中StringBuffer类的实现方法及使用
Sep 02 Javascript
Bootstrap Multiselect 常用组件实现代码
Jul 09 Javascript
React项目动态设置title标题的方法示例
Sep 26 Javascript
vue 中Virtual Dom被创建的方法
Apr 15 Javascript
详解vue 命名视图
Aug 14 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
最小化数据传输――在客户端存储数据
2006/10/09 PHP
PHP session会话的安全性分析
2011/09/08 PHP
PHP提示Notice: Undefined variable的解决办法
2012/11/24 PHP
PHP 抽象方法与抽象类abstract关键字介绍及应用
2014/10/16 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
2016/10/08 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
2019/10/17 PHP
基于SVG的web页面图形绘制API介绍及编程演示
2013/06/28 Javascript
密码框显示提示文字jquery示例
2013/08/29 Javascript
table insertRow、deleteRow定义和用法总结
2014/05/14 Javascript
jquery中change()用法实例分析
2015/02/06 Javascript
微信js-sdk地理位置接口用法示例
2016/10/12 Javascript
微信小程序开发之大转盘 仿天猫超市抽奖实例
2016/12/08 Javascript
微信小程序App生命周期详解
2018/01/31 Javascript
详解vue移动端日期选择组件
2018/02/22 Javascript
详解npm 配置项registry修改为淘宝镜像
2018/09/07 Javascript
浅谈TypeScript 用 Webpack/ts-node 运行的配置记录
2019/10/11 Javascript
VUE实现Studio管理后台之鼠标拖放改变窗口大小
2020/03/04 Javascript
js实现简单贪吃蛇游戏
2020/05/15 Javascript
Python实现身份证号码解析
2015/09/01 Python
Python中is与==判断的区别
2017/03/28 Python
Python实现随机生成有效手机号码及身份证功能示例
2017/06/05 Python
Python判断两个list是否是父子集关系的实例
2018/05/04 Python
Python使用numpy模块创建数组操作示例
2018/06/20 Python
Python学习笔记之Django创建第一个数据库模型的方法
2019/08/07 Python
python os.fork() 循环输出方法
2019/08/08 Python
Python 读取用户指令和格式化打印实现解析
2019/09/02 Python
python 将html转换为pdf的几种方法
2020/12/29 Python
html5的新玩法——语音搜索
2013/01/03 HTML / CSS
澳大利亚领先的睡衣品牌:Peter Alexander
2016/08/16 全球购物
财务会计专业推荐信
2013/11/30 职场文书
如何打造一封优秀的留学推荐信
2014/01/25 职场文书
护理专科毕业生自荐书范文
2014/02/19 职场文书
档案工作汇报材料
2014/08/21 职场文书
团队执行力培训心得体会
2015/08/15 职场文书
Hive常用日期格式转换语法
2022/06/25 数据库
MySQL事务的ACID特性以及并发问题方案
2022/07/15 MySQL