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 相关文章推荐
载入jQuery库的最佳方法详细说明及实现代码
Dec 28 Javascript
jQuery中parent()方法用法实例
Jan 07 Javascript
在Javascript中处理字符串之big()方法的使用
Jun 08 Javascript
JavaScript多线程详解
Aug 12 Javascript
jQuery实现简单的列表式导航菜单效果代码
Aug 31 Javascript
jQuery实现有动画淡出效果的二级折叠菜单代码
Oct 17 Javascript
jquery form表单获取内容以及绑定数据
Feb 24 Javascript
深入浅析Bootstrap列表组组件
May 03 Javascript
jQuery判断checkbox选中状态
May 12 Javascript
使用ng-packagr打包Angular的方法示例
Sep 21 Javascript
对angularJs中$sce服务安全显示html文本的实例
Sep 30 Javascript
jQuery实现获取多选框的值示例
Feb 07 jQuery
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
php下实现伪 url 的超简单方法[转]
2007/09/24 PHP
浅析Yii2 GridView实现下拉搜索教程
2016/04/22 PHP
PHP测试框架PHPUnit组织测试操作示例
2018/05/28 PHP
详解PHP实现支付宝小程序用户授权的工具类
2018/12/25 PHP
javascript parseInt 大改造
2009/09/27 Javascript
js focus不起作用的解决方法(主要是因为dom元素是否加载完成)
2010/11/05 Javascript
js控制web打印(局部打印)方法整理
2013/05/29 Javascript
加载远程图片时,经常因为缓存而得不到更新的解决方法(分享)
2013/06/26 Javascript
用Js实现的动态增加表格示例自己写的
2013/10/21 Javascript
js控制文本框只输入数字和小数点的方法
2015/03/10 Javascript
浅谈js控制li标签排序问题 js调用php函数的方法
2016/10/16 Javascript
Bootstrap Modal遮罩弹出层代码分享
2016/11/21 Javascript
基于Vue实现tab栏切换内容不断实时刷新数据功能
2017/04/13 Javascript
js回文数的4种判断方法示例
2019/06/04 Javascript
[05:11]TI9战队采访——VIRTUSPRO
2019/08/22 DOTA
python 排列组合之itertools
2013/03/20 Python
python Django模板的使用方法(图文)
2013/11/04 Python
Python操作Access数据库基本步骤分析
2016/09/19 Python
python基础教程项目四之新闻聚合
2018/04/02 Python
详解flask表单提交的两种方式
2018/07/21 Python
python时间序列按频率生成日期的方法
2019/05/14 Python
浅析HTML5中的 History 模式
2017/06/22 HTML / CSS
前端H5 Video常见使用场景简介
2020/08/21 HTML / CSS
英国和世界各地鲜花速递专家:Arena Flowers
2018/02/10 全球购物
独特的礼品和创新的科技产品:The Grommet
2018/02/24 全球购物
应届本科生推荐信范文
2013/12/25 职场文书
公司活动邀请函
2014/01/24 职场文书
先进事迹报告会主持词
2014/04/02 职场文书
中学生演讲稿
2014/04/26 职场文书
2014党委书记四风对照检查材料思想汇报
2014/09/21 职场文书
个人整改方案范文
2014/10/25 职场文书
房屋产权共有协议书范本
2014/11/03 职场文书
工作态度不好检讨书
2015/05/06 职场文书
企业年会祝酒词
2015/08/11 职场文书
2016年党风廉政建设承诺书
2016/03/25 职场文书
Python多线程实用方法以及共享变量资源竞争问题
2022/04/12 Python