自己动手手写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 相关文章推荐
jQuery开发者都需要知道的5个小技巧
Jan 08 Javascript
JQuery 选择器、过滤器介绍
Feb 14 Javascript
用Javascript实现Windows任务管理器的代码
Mar 27 Javascript
禁用页面部分JavaScript方法的具体实现
Jul 31 Javascript
Javascript基础教程之switch语句
Jan 18 Javascript
JavaScript实现页面跳转的几种常用方式
Nov 28 Javascript
通过正则表达式获取url中参数的简单实现
Jun 07 Javascript
js实现PC端根据IP定位当前城市地理位置
Feb 22 Javascript
JavaScript中的普通函数和箭头函数的区别和用法详解
Mar 21 Javascript
Vue动画事件详解及过渡动画实例
Feb 09 Javascript
基于JS抓取某高校附近共享单车位置 使用web方式展示位置变化代码实例
Aug 27 Javascript
vue3.0中setup使用(两种用法)
Dec 02 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脚本代码
2011/02/19 PHP
PHP中OpenSSL加密问题整理
2017/12/14 PHP
基于PHP实现堆排序原理及实例详解
2020/06/19 PHP
经常用的图片在容器中的水平垂直居中实例
2007/06/10 Javascript
用js解决数字不能换行问题
2010/08/10 Javascript
TimergliderJS 一个基于jQuery的时间轴插件
2011/12/07 Javascript
Javascript中克隆一个数组的实现代码
2013/12/06 Javascript
ExtJS的拖拽效果示例
2013/12/09 Javascript
javascript中数组的多种定义方法和常用函数简介
2014/05/09 Javascript
深入探讨javascript中的数据类型
2015/03/04 Javascript
基于jQuery实现在线选座之高铁版
2015/08/24 Javascript
jQuery实现滚动切换的tab选项卡效果代码
2015/08/26 Javascript
js窗口关闭提示信息(兼容IE和firefox)
2015/10/23 Javascript
jQuery的 $.ajax防止重复提交的两种方法(推荐)
2016/10/14 Javascript
js实现省份下拉菜单效果
2017/02/15 Javascript
JS实现Cookie读、写、删除操作工具类示例
2018/08/28 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
Egg Vue SSR 服务端渲染数据请求与asyncData
2019/11/24 Javascript
基于JavaScript实现轮播图效果
2021/01/02 Javascript
[03:40]2014DOTA2国际邀请赛 B神专访:躲箭真的很难
2014/07/13 DOTA
python列表操作之extend和append的区别实例分析
2015/07/28 Python
详解将Django部署到Centos7全攻略
2018/09/26 Python
Django框架用户注销功能实现方法分析
2019/05/28 Python
python适合人工智能的理由和优势
2019/06/28 Python
Python测试Kafka集群(pykafka)实例
2019/12/23 Python
Python Serial串口基本操作(收发数据)
2020/11/06 Python
html5 css3网站菜单实现代码
2013/12/23 HTML / CSS
奇怪的鱼:Weird Fish
2018/03/18 全球购物
耐克波兰官方网站:Nike波兰
2019/09/03 全球购物
见习报告格式范文
2014/11/08 职场文书
小学班主任个人总结
2015/03/03 职场文书
2015年超市工作总结
2015/04/09 职场文书
学生检讨书范文
2019/06/24 职场文书
少年的你:世界上没有如果,要在第一次就勇敢的反抗
2019/11/20 职场文书
十大公认最好看的动漫:《咒术回战》在榜,《钢之炼金术师》第一
2022/03/18 日漫
收音机爱好者玩机13年,简评其使用过的19台收音机
2022/04/30 无线电