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 关键字“拖曳搜索”之“拖曳”以及 图片“提示自适应放大”效果 的实现
Apr 18 Javascript
js判断字符长度及中英文数字等
Mar 19 Javascript
node.js cookie-parser之parser.js
Jun 06 Javascript
Javascript单例模式的介绍和实例
Oct 08 Javascript
jQuery实现注册会员时密码强度提示信息功能示例
Sep 05 jQuery
详细分析JS函数去抖和节流
Dec 05 Javascript
对vue中methods互相调用的方法详解
Aug 30 Javascript
深入探讨JavaScript的最基本部分之执行上下文
Feb 12 Javascript
解决$store.getters调用不执行的问题
Nov 08 Javascript
JS FormData对象使用方法实例详解
Feb 12 Javascript
vuex的数据渲染与修改浅析
Nov 26 Vue.js
WebStorm无法正确识别Vue3组合式API的解决方案
Feb 18 Vue.js
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执行速度全攻略(上)
2006/10/09 PHP
phpMyAdmin 安装及问题总结
2009/05/28 PHP
php数据库配置文件一般做法分享
2012/07/07 PHP
php抽奖小程序的实现代码
2013/06/18 PHP
php实现求相对时间函数
2015/06/15 PHP
以实例全面讲解PHP中多进程编程的相关函数的使用
2015/08/18 PHP
php mysql like 实现多关键词搜索的方法
2016/10/29 PHP
PHP二维索引数组的遍历实例分析【2种方式】
2019/06/24 PHP
Smarty模板语法详解
2019/07/20 PHP
TNC vs RR BO3 第一场 2.14
2021/03/10 DOTA
CL vs ForZe BO5 第五场 2.13
2021/03/10 DOTA
基于jquery实现的鼠标拖拽元素复制并写入效果
2011/08/23 Javascript
JavaScript基础知识之数据类型
2012/08/06 Javascript
用jquery的方法制作一个简单的导航栏
2014/06/23 Javascript
javascript 原型链维护和继承详解
2014/11/26 Javascript
jQuery中:file选择器用法实例
2015/01/04 Javascript
使用微信内置浏览器点击下拉框出现页面乱跳转现象(iphone),该怎么办
2016/01/04 Javascript
AngularJS实现单一页面内设置跳转路由的方法
2017/06/28 Javascript
详解关闭令人抓狂的ESlint 语法检测配置方法
2019/10/28 Javascript
vue递归获取父元素的元素实例
2020/08/07 Javascript
使用Python3中的gettext模块翻译Python源码以支持多语言
2015/03/31 Python
Python中关于字符串对象的一些基础知识
2015/04/08 Python
Python调用服务接口的实例
2019/01/03 Python
PYQT5设置textEdit自动滚屏的方法
2019/06/14 Python
学python安装的软件总结
2019/10/12 Python
python 图片二值化处理(处理后为纯黑白的图片)
2019/11/01 Python
使用apiDoc实现python接口文档编写
2019/11/19 Python
详解Python直接赋值,深拷贝和浅拷贝
2020/07/09 Python
python上下文管理器异常问题解决方法
2021/02/07 Python
Css3新特性应用之形状总结
2016/12/08 HTML / CSS
机械制造毕业生求职信
2014/03/03 职场文书
大学英语演讲稿范文
2014/04/24 职场文书
家庭暴力离婚起诉书
2015/05/18 职场文书
深入理解java.lang.String类的不可变性
2021/06/27 Java/Android
Java图书管理系统,课程设计必用(源码+文档)
2021/06/30 Java/Android
英国数字版游戏销量周榜公布 《小缇娜的奇幻之地》登顶
2022/04/03 其他游戏