自己动手手写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 相关文章推荐
一起来写段JS drag拖动代码
Dec 09 Javascript
关于延迟加载JavaScript
May 05 Javascript
Jquery日历插件制作简单日历
Oct 28 Javascript
bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能
May 27 Javascript
AngularJS基础 ng-if 指令用法
Aug 01 Javascript
JS中对Cookie的操作详解
Aug 05 Javascript
浅谈JS获取元素的N种方法及其动静态讨论
Aug 25 Javascript
AngularJs 最新验证手机号码的实例,成功测试通过
Nov 26 Javascript
浅谈jquery fullpage 插件增加头部和版权的方法
Mar 20 jQuery
vue 项目地址去掉 #的方法
Oct 20 Javascript
vue项目中实现图片预览的公用组件功能
Oct 26 Javascript
vue实现图片裁剪后上传
Dec 16 Vue.js
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/11/16 PHP
PHP中for循环语句的几种变型
2007/03/16 PHP
php一维二维数组键排序方法实例总结
2014/11/13 PHP
Laravel实现用户注册和登录
2015/01/23 PHP
PHP 获取ip地址代码汇总
2015/07/05 PHP
YII2 实现多语言配置的方法分享
2017/01/11 PHP
php 类中的常量、静态属性、非静态属性的区别
2017/04/09 PHP
Mac系统完美安装PHP7详细教程
2017/06/06 PHP
PHP多个图片压缩成ZIP的方法
2020/08/18 PHP
Area 区域实现post提交数据的js写法
2014/04/22 Javascript
jQuery中html()方法用法实例
2014/12/25 Javascript
举例讲解AngularJS中的模块
2015/06/17 Javascript
图解prototype、proto和constructor的三角关系
2016/07/31 Javascript
webpack组织模块打包Library的原理及实现
2018/03/10 Javascript
详解angular2 控制视图的封装模式
2018/12/27 Javascript
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
2017/09/26 Python
python实现装饰器、描述符
2018/02/28 Python
利用pandas进行大文件计数处理的方法
2018/07/25 Python
Python 调用 zabbix api的方法示例
2019/01/06 Python
Python3 执行Linux Bash命令的方法
2019/07/12 Python
Python实现ATM系统
2020/02/17 Python
pyinstaller打包单文件时--uac-admin选项不起作用怎么办
2020/04/15 Python
一文带你掌握Pyecharts地理数据可视化的方法
2021/02/06 Python
html5 input输入实时检测以及延时优化
2018/07/18 HTML / CSS
瑞士香水购物网站:Parfumcity.ch
2017/01/14 全球购物
台湾家适得:Homeget
2019/02/11 全球购物
Java里面Pass by value和Pass by Reference是什么意思
2016/05/02 面试题
大学生护理专业自荐信
2013/10/03 职场文书
房产代理公证处委托书
2014/04/04 职场文书
2014年党员干部四风问题自我剖析材料
2014/09/29 职场文书
医生个人自我剖析材料
2014/10/08 职场文书
简易版租房协议书范本
2014/10/13 职场文书
文员岗位职责范本
2015/04/16 职场文书
催款函范本大全
2015/06/24 职场文书
环境卫生整治简报
2015/07/20 职场文书
小程序教您怎样你零成本推广获取数万用户的方法
2019/07/30 职场文书