自己动手手写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 相关文章推荐
实例详解AngularJS实现无限级联动菜单
Jan 15 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
Mar 07 Javascript
jQuery实现智能判断固定导航条或侧边栏的方法
Sep 04 Javascript
js中字符型和数值型数字的互相转化方法(必看)
Apr 25 Javascript
AngularJS页面带参跳转及参数解析操作示例
Jun 28 Javascript
ionic2中使用自动生成器的方法
Mar 04 Javascript
vue中使用echarts制作圆环图的实例代码
Jul 27 Javascript
小程序根据手机机型设置自定义底部导航距离
Jun 04 Javascript
Vue中错误图片的处理的实现代码
Nov 07 Javascript
小程序实现按下录音松开识别语音
Nov 22 Javascript
js实现简单的贪吃蛇游戏
Apr 23 Javascript
Vue 组件注册全解析
Dec 17 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
php面向对象全攻略 (一) 面向对象基础知识
2009/09/30 PHP
PHP全概率运算函数(优化版) Webgame开发必备
2011/07/04 PHP
php操作mongoDB实例分析
2014/12/29 PHP
初识laravel5
2015/03/02 PHP
PHP实现移除数组中为空或为某值元素的方法
2017/01/07 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
2017/09/28 PHP
php写入txt乱码的解决方法
2019/09/17 PHP
javascript 一个函数对同一元素的多个事件响应
2009/07/25 Javascript
jQuery 写的简单打字游戏可以提示正确和错误的次数
2014/07/01 Javascript
JS+CSS实现大气的黑色首页导航菜单效果代码
2015/09/10 Javascript
基于javascript制作微信聊天面板
2020/08/09 Javascript
ExtJs整合Echarts的示例代码
2018/02/27 Javascript
小程序实现多选框功能
2018/10/30 Javascript
写gulp遇到的ES6问题详解
2018/12/03 Javascript
vue动态绘制四分之三圆环图效果
2019/09/03 Javascript
[01:36]DOTA2完美大师赛趣味视频之与队友相处的十万个技巧
2017/11/19 DOTA
python实现下载指定网址所有图片的方法
2015/08/08 Python
使用XML库的方式,实现RPC通信的方法(推荐)
2017/06/14 Python
Python语言描述KNN算法与Kd树
2017/12/13 Python
python cs架构实现简单文件传输
2020/03/20 Python
python 快速把超大txt文件转存为csv的实例
2018/10/26 Python
解决项目pycharm能运行,在终端却无法运行的问题
2019/01/19 Python
详解Django+uwsgi+Nginx上线最佳实战
2019/03/14 Python
pytorch使用Variable实现线性回归
2019/05/21 Python
使用Pandas的Series方法绘制图像教程
2019/12/04 Python
tf.concat中axis的含义与使用详解
2020/02/07 Python
Python使用pyenv实现多环境管理
2021/02/05 Python
菲律宾领先的在线时尚商店:Zalora菲律宾
2018/02/08 全球购物
专注澳大利亚特产和新西兰特产的澳洲中文网:0061澳洲制造
2019/03/24 全球购物
信息系统专业个人求职信范文
2013/12/07 职场文书
最新的互联网创业计划书
2014/01/10 职场文书
外贸专业求职信
2014/03/09 职场文书
如何使用CocosCreator对象池
2021/04/14 Javascript
Mysql效率优化定位较低sql的两种方式
2021/05/26 MySQL
在Python中如何使用yield
2021/06/07 Python
Ajax 的初步实现(使用vscode+node.js+express框架)
2021/06/18 Javascript