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 相关文章推荐
JavaScript入门教程(7) History历史对象
Jan 31 Javascript
input、button的不同type值在ajax提交表单时导致的陷阱
Feb 24 Javascript
jquery实现非叠加式的搜索框提示效果
Jan 07 Javascript
dedecms页面如何获取会员状态的实例代码
Mar 15 Javascript
AngularJS Select(选择框)使用详解
Jan 18 Javascript
VUE多层路由嵌套实现代码
May 15 Javascript
使用JavaScript进行表单校验功能
Aug 01 Javascript
详解如何使用babel进行es6文件的编译
May 29 Javascript
vuejs使用axios异步访问时用get和post的实例讲解
Aug 09 Javascript
jQuery实现网页拼图游戏
Apr 22 jQuery
JavaScript实现shuffle数组洗牌操作示例
Jan 03 Javascript
如何正确理解vue中的key详解
Nov 02 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
全国FM电台频率大全 - 11 浙江省
2020/03/11 无线电
PHP中date()日期函数有关参数整理
2011/07/19 PHP
PHP.ini中配置屏蔽错误信息显示和保存错误日志的例子
2014/05/12 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
2016/10/18 PHP
PHP中include和require的区别实例分析
2017/05/07 PHP
ThinkPHP 3.2.3实现加减乘除图片验证码
2018/12/05 PHP
php常用的工具开发整理
2019/09/26 PHP
jquery获取table中的某行全部td的内容方法
2013/03/08 Javascript
js判断某个方法是否存在实例代码
2015/01/10 Javascript
javascript折半查找详解
2015/01/26 Javascript
Javascript动态创建表格及删除行列的方法
2015/05/15 Javascript
JavaScript中的对象和原型(一)
2016/08/12 Javascript
基于JavaScript实现点击页面任何位置返回
2016/08/31 Javascript
angularjs实现文字上下无缝滚动特效代码
2016/09/04 Javascript
Angular2表单自定义验证器的实现
2016/10/19 Javascript
详解javascript appendChild()的完整功能
2018/08/18 Javascript
详解在Node.js中发起HTTP请求的5种方法
2019/01/10 Javascript
layui 实现二级弹窗弹出之后 关闭一级弹窗的方法
2019/09/18 Javascript
[00:20]TI9观赛名额抽取Ⅱ
2019/07/24 DOTA
python实现数通设备端口监控示例
2014/04/02 Python
python求列表交集的方法汇总
2014/11/10 Python
Windows下使Python2.x版本的解释器与3.x共存的方法
2015/10/25 Python
Python的Flask框架应用调用Redis队列数据的方法
2016/06/06 Python
python计算n的阶乘的方法代码
2019/10/25 Python
vue.js刷新当前页面的实例讲解
2020/12/29 Python
KIKO MILANO英国官网:意大利知名化妆品和护肤品品牌
2017/09/25 全球购物
C/C++程序员常见面试题二
2015/11/19 面试题
工商技校毕业生自荐信
2013/11/15 职场文书
护士毕业生自荐信
2014/02/07 职场文书
安全生产承诺书
2014/03/26 职场文书
实验心得体会
2014/09/05 职场文书
学校食堂标语
2014/10/06 职场文书
优秀教师工作总结2015
2015/07/22 职场文书
生活小常识广播稿
2015/08/19 职场文书
三严三实·严以修身心得体会
2016/01/15 职场文书
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
2021/04/03 Python