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实现控制内容的向上向下滚动效果
Jun 26 Javascript
js操作输入框提示信息且响应鼠标事件
Mar 25 Javascript
跟我学Node.js(四)---Node.js的模块载入方式与机制
Jun 04 Javascript
jQuery基础语法实例入门
Dec 23 Javascript
JavaScript中常见获取元素的方法汇总
Mar 04 Javascript
jQuery+HTML5美女瀑布流布局实现方法
Sep 21 Javascript
jQuery ztree实现动态树形多选菜单
Aug 12 Javascript
jquery实现点击页面回到顶部
Nov 23 Javascript
Bootstrap的popover(弹出框)2秒后定时消失的实现代码
Feb 27 Javascript
禁止弹窗中蒙层底部页面跟随滚动的几种方法
Dec 07 Javascript
node实现简单的增删改查接口实例代码
Aug 22 Javascript
CentOS 8.2服务器上安装最新版Node.js的方法
Dec 16 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
改造一台复古桌面收音机
2021/03/02 无线电
PHP 创建标签云函数代码
2010/05/26 PHP
php的urlencode()URL编码函数浅析
2011/08/09 PHP
在WINDOWS中设置计划任务执行PHP文件的方法
2011/12/19 PHP
php mysqli查询语句返回值类型实例分析
2016/06/29 PHP
基于PHPexecl类生成复杂的报表表头示例
2016/10/14 PHP
php生成与读取excel文件
2016/10/14 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
2017/07/22 PHP
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
2007/04/12 Javascript
收藏Javascript中常用的55个经典技巧
2007/08/12 Javascript
关于hashchangebroker和statehashable的补充文档
2011/08/08 Javascript
Jquery判断$(&quot;#id&quot;)获取的对象是否存在的方法
2013/09/25 Javascript
javascript抖动元素的小例子
2013/10/28 Javascript
解决同一页面中两个iframe互相调用jquery,js函数的方法
2016/12/12 Javascript
javascript 中的try catch应用总结
2017/04/01 Javascript
jQuery zTree树插件动态加载实例代码
2017/05/11 jQuery
js将键值对字符串转为json字符串的方法
2018/03/30 Javascript
Node.js 多线程完全指南总结
2019/03/27 Javascript
如何进行微信公众号开发的本地调试的方法
2019/06/16 Javascript
vue cli4.0项目引入typescript的方法
2020/07/17 Javascript
js实现前端界面导航栏下拉列表
2020/08/27 Javascript
Python获取服务器信息的最简单实现方法
2015/03/05 Python
Python实现的插入排序算法原理与用法实例分析
2017/11/22 Python
python列表,字典,元组简单用法示例
2019/07/11 Python
django项目用higcharts统计最近七天文章点击量
2019/08/17 Python
手写一个python迭代器过程详解
2019/08/27 Python
浅谈cv2.imread()和keras.preprocessing中的image.load_img()区别
2020/06/12 Python
会计职业生涯规划范文
2014/01/04 职场文书
入股协议书范本
2014/04/14 职场文书
本科毕业生自荐信
2014/06/02 职场文书
商铺门前三包责任书
2014/07/25 职场文书
软件项目经理岗位职责
2015/04/01 职场文书
项目技术负责人岗位职责
2015/04/13 职场文书
民事二审代理词
2015/05/25 职场文书
解析目标检测之IoU
2021/06/26 Python
浅谈Redis 中的过期删除策略和内存淘汰机制
2022/04/03 Redis