自己动手手写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 相关文章推荐
php+js实现倒计时功能
Jun 02 Javascript
JS实现网页背景颜色与select框中颜色同时变化的方法
Feb 27 Javascript
JavaScript中关键字 in 的使用方法详解
Oct 17 Javascript
Vue.js 2.0学习教程之从基础到组件详解
Apr 24 Javascript
微信小程序图片横向左右滑动案例
May 19 Javascript
js实现鼠标拖拽多选功能示例
Aug 01 Javascript
使用原生js+canvas实现模拟心电图的实例
Sep 20 Javascript
js实现点击展开隐藏效果(实例代码)
Sep 28 Javascript
vue-cli项目中使用echarts图表实例
Oct 22 Javascript
JS数组方法push()、pop()用法实例分析
Jan 18 Javascript
node.js中fs文件系统模块的使用方法实例详解
Feb 13 Javascript
基于Element封装一个表格组件tableList的使用方法
Jun 29 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
再说下636单管机
2021/03/02 无线电
php文件缓存类用法实例分析
2015/04/22 PHP
Javascript调试工具(下载)
2007/01/09 Javascript
MooTools 1.2中的Drag.Move来实现拖放
2009/09/15 Javascript
TextArea 控件的最大长度问题(js json)
2009/12/16 Javascript
JS中的构造函数详细解析
2014/03/10 Javascript
判断一个对象是否为jquery对象的方法
2014/03/12 Javascript
JS交换变量的方法
2015/01/21 Javascript
轻松掌握JavaScript享元模式
2016/08/27 Javascript
js实现点击按钮弹出上传文件的窗口
2016/12/23 Javascript
使用proxy实现一个更优雅的vue【推荐】
2018/06/19 Javascript
JavaScript对象的特性与实践应用深入详解
2018/12/30 Javascript
Vue中JS动画与Velocity.js的结合使用
2019/02/13 Javascript
微信小程序实现元素渐入渐出动画效果封装方法
2019/05/18 Javascript
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
2019/10/16 jQuery
简述Vue中容易被忽视的知识点
2019/12/09 Javascript
JS实现密码框效果
2020/09/10 Javascript
Javascript Symbol原理及使用方法解析
2020/10/22 Javascript
Python进阶篇之字典操作总结
2016/11/16 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
2017/12/19 Python
pytorch对可变长度序列的处理方法详解
2018/12/08 Python
Python分布式进程中你会遇到的问题解析
2019/05/28 Python
Python数据类型之列表和元组的方法实例详解
2019/07/08 Python
python和php哪个容易学
2020/06/19 Python
PIP和conda 更换国内安装源的方法步骤
2020/09/21 Python
韩国女装NO.1网店:STYLENANDA
2016/09/16 全球购物
Gweniss格温妮丝女包官网:英国纯手工制造潮流包包品牌
2018/02/07 全球购物
北美主要的汽车零部件零售商:AutoShack.com
2019/02/23 全球购物
财务管理专业求职信
2014/06/11 职场文书
解析CSS 提取图片主题色功能(小技巧)
2021/05/12 HTML / CSS
pandas数值排序的实现实例
2021/07/25 Python
Oracle中update和select 关联操作
2022/01/18 Oracle
Java处理延时任务的常用几种解决方案
2022/06/01 Java/Android
MutationObserver在页面水印实现起到的作用详解
2022/07/07 Javascript
SpringBoot详解执行过程
2022/07/15 Java/Android
python如何将mat文件转为png
2022/07/15 Python