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 相关文章推荐
不用写JS也能使用EXTJS视频演示
Dec 29 Javascript
JavaScript实现网页截图功能
Oct 16 Javascript
JavaScript对象之深度克隆介绍
Dec 08 Javascript
jQuery使用之处理页面元素用法实例
Jan 19 Javascript
简介JavaScript中的setDate()方法的使用
Jun 11 Javascript
jQuery实现带有上下控制按钮的简单多行滚屏效果代码
Sep 04 Javascript
javascript HTML5文件上传FileReader API
Mar 27 Javascript
在线引用最新jquery文件的实现方法
Aug 26 Javascript
KnockoutJS 3.X API 第四章之事件event绑定
Oct 10 Javascript
angularJs中datatable实现代码
Jun 03 Javascript
jQuery加PHP实现图片上传并提交的示例代码
Jul 16 jQuery
浅谈JS for循环中使用break和continue的区别
Jul 21 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
discuz 首页四格:最新话题+最新回复+热门话题+精华文章插件
2007/08/19 PHP
PHP获取某个月最大天数(最后一天)的方法
2015/07/29 PHP
PHP消息队列用法实例分析
2016/02/12 PHP
CI框架入门之MVC简单示例
2016/11/21 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
2017/06/20 PHP
原型方法的不同写法居然会影响调试的解决方法
2007/03/08 Javascript
JQuery小知识
2010/10/15 Javascript
为JavaScript类型增加方法的实现代码(增加功能)
2011/12/29 Javascript
设为首页和收藏的Javascript代码(亲测兼容IE,Firefox,chrome等浏览器)
2013/11/18 Javascript
jQuery 事件的命名空间简单了解
2013/11/22 Javascript
如何调试异步加载页面里包含的js文件
2014/10/30 Javascript
js+HTML5实现canvas多种颜色渐变效果的方法
2015/06/05 Javascript
使用Javascript写的2048小游戏
2015/11/25 Javascript
JavaScript中Object.prototype.toString方法的原理
2016/02/24 Javascript
location.hash保存页面状态的技巧
2016/04/28 Javascript
移动端使用localStorage缓存Js和css文的方法(web开发)
2016/09/20 Javascript
深入理解javascript中concat方法
2016/12/12 Javascript
使用prop解决一个checkbox选中后再次选中失效的问题
2017/07/05 Javascript
ReactNative踩坑之配置调试端口的解决方法
2017/07/28 Javascript
Nodejs 和Session 原理及实战技巧小结
2017/08/25 NodeJs
vue.js实现的经典计算器/科学计算器功能示例
2018/07/11 Javascript
使用Webpack 搭建 Vue3 开发环境过程详解
2020/07/28 Javascript
利用python爬取散文网的文章实例教程
2017/06/18 Python
python dataframe向下向上填充,fillna和ffill的方法
2018/11/28 Python
python numpy实现文件存取的示例代码
2019/05/26 Python
python获取当前文件路径以及父文件路径的方法
2019/07/10 Python
python3应用windows api对后台程序窗口及桌面截图并保存的方法
2019/08/27 Python
python 中Arduino串口传输数据到电脑并保存至excel表格
2019/10/14 Python
keras tensorflow 实现在python下多进程运行
2020/02/06 Python
宝宝周岁宴答谢词
2014/01/26 职场文书
展会邀请函范文
2014/01/26 职场文书
2014教师教育实践活动对照检查材料思想汇报
2014/09/21 职场文书
寒假安全保证书
2015/02/28 职场文书
奔腾年代观后感
2015/06/09 职场文书
导游词之西湖雷峰塔
2019/09/18 职场文书
python自动计算图像数据集的RGB均值
2021/06/18 Python