jQuery插件的写法分享


Posted in Javascript onJune 12, 2013

1、概述

先看看html代码

<ul id="catagory">
    <li><a href="#">jQuery</a></li>
    <li><a href="#">Asp.net</a></li>
    <li><a href="#">Sql Server</a></li>
    <li><a href="#">CSS</a></li>
</ul>

比如我们要实现当光标移动到a标签上时,a标签向右移动一段距离,离开时a位置恢复。实现方法如下:

$(document).ready(function() {
    $("#catagory a").hover(function() {
        $(this).animate({ paddingLeft: "20px" }, { queue: false, duration: 500 });
    }, function() {
        $(this).animate({ paddingLeft: "0" }, { queue: true, duration: 500 });
    });
});

现在我们将这个方法进行扩展,写成jQuery插件的形式,以后也能在别的项目中使用,并且可以方便的更改一些属性值,现在我们来看看jQuery插件的写法。

2、jQuery插件的结构

下边这个结构应该是编写jQuery插件的一个比较好的结构,我将原作者的一些注释进行了相应的翻译。

//为避免冲突,将我们的方法用一个匿名方法包裹起来
(function($) {
    //扩展这个方法到jquery
    $.fn.extend({
        //插件名字
        pluginname: function() {
            //遍历匹配元素的集合
            return this.each(function() {
                //在这里编写相应代码进行处理 
            });
        }
    });
 //传递jQuery到方法中,这样我们可以使用任何javascript中的变量来代替"$"      
})(jQuery);

接下来,我们给插件中加入一些可以改变的属性,这样用户可以根据自己的需要来做一些更改。同时,我们应提供相应的默认值。

(function($){  
    $.fn.extend({   
 //将可选择的变量传递给方法
        pluginname: function(options) {  
            //设置默认值并用逗号隔开
            var defaults = {  
                padding: 20,  
                mouseOverColor : '#000000',  
                mouseOutColor : '#ffffff'  
            }  
            var options =  $.extend(defaults, options);  
            return this.each(function() {  
                var o = options;  
                //这里编写相应代码 
                //可以像下边这样获取变量值 
                alert(o.padding);  
            });  
        }  
    });  
})(jQuery); 

3、实现jQuery插件

(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);

最后,使用插件的方法如下:

//使用插件
$(document).ready(function() {
    $("#catagory").paddingList({ animatePadding: 30, hoverColor: "Red" });
});
作者:朋友的你 来源:jQuery学习
Javascript 相关文章推荐
用cookies实现的可记忆的样式切换效果代码下载
Dec 24 Javascript
用JavaScript实现类似于ListBox功能示例代码
Mar 09 Javascript
浅谈javascript语法和定时函数
May 03 Javascript
浅谈利用JavaScript进行的DDoS攻击原理与防御
Jun 04 Javascript
使用Angular.js开发的注意事项
Oct 19 Javascript
vue基于mint-ui实现城市选择三级联动
Jun 30 Javascript
详解Ubuntu安装angular-cli遇到的坑
Sep 08 Javascript
一步一步的了解webpack4的splitChunk插件(小结)
Sep 17 Javascript
详解基于React.js和Node.js的SSR实现方案
Mar 21 Javascript
javascript数组元素删除方法delete和splice解析
Dec 09 Javascript
JavaScript实现HSL拾色器
May 21 Javascript
原生js实现弹窗消息动画
Nov 20 Javascript
jQuery 淡出一个图像到另一个图像的实现代码
Jun 12 #Javascript
单击浏览器右上角的X关闭窗口弹出提示的小例子
Jun 12 #Javascript
Jquery 表单验证类介绍与实例
Jun 09 #Javascript
js调用后台servlet方法实例
Jun 09 #Javascript
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
Jun 09 #Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
Jun 09 #Javascript
ScrollDown的基本操作示例
Jun 09 #Javascript
You might like
PHPShop存在多个安全漏洞
2006/10/09 PHP
jq的get传参数在utf-8中乱码问题的解决php版
2008/07/23 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
PHP+jQuery实现即点即改功能示例
2019/02/21 PHP
JS对外部文件的加载及对IFRMAME的加载的实现,当加载完成后,指定指向方法(方法回调)
2011/07/04 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
2014/04/16 Javascript
JQuery判断radio(单选框)是否选中和获取选中值方法总结
2015/04/15 Javascript
今天抽时间给大家整理jquery和ajax的相关知识
2015/11/17 Javascript
利用纯Vue.js构建Bootstrap组件
2016/11/03 Javascript
JavaScript正则获取地址栏中参数的方法
2017/03/02 Javascript
JavaScript运动框架 多值运动(四)
2017/05/18 Javascript
JS运动特效之完美运动框架实例分析
2018/01/24 Javascript
vue单个组件实现无限层级多选菜单功能
2018/04/10 Javascript
Fundebug支持监控微信小程序HTTP请求错误的方法
2019/02/21 Javascript
微信小程序官方动态自定义底部tabBar的例子
2019/09/04 Javascript
[02:45]2016年中国刀塔全程回顾,完美“圣”典即将上演
2016/12/15 DOTA
[42:52]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
Python实现CET查分的方法
2015/03/10 Python
利用scrapy将爬到的数据保存到mysql(防止重复)
2018/03/31 Python
关于Python的一些学习总结
2018/05/25 Python
对Python3 goto 语句的使用方法详解
2019/02/16 Python
利用Python pandas对Excel进行合并的方法示例
2020/11/04 Python
CSS3 RGBA色彩模式使用实例讲解
2016/04/26 HTML / CSS
HTML5 canvas 瀑布流文字效果的示例代码
2018/01/31 HTML / CSS
英国领先的体验日提供商:Buyagift
2019/04/19 全球购物
英国排名第一的宠物店:PetPlanet
2020/02/02 全球购物
婚礼证婚人证婚词
2014/01/08 职场文书
村党支部书记承诺书
2014/05/29 职场文书
学校领导干部民主生活会整改方案
2014/09/29 职场文书
婚姻出轨保证书
2015/05/08 职场文书
中国合伙人观后感
2015/06/02 职场文书
小爸爸观后感
2015/06/15 职场文书
2015年教务主任工作总结
2015/07/22 职场文书
教师节随笔
2015/08/15 职场文书
迎国庆主题班会
2015/08/17 职场文书
python自然语言处理之字典树知识总结
2021/04/25 Python