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 相关文章推荐
做网页的一些技巧(续)
Feb 01 Javascript
番茄的表单验证类代码修改版
Jul 18 Javascript
基于jquery的动态创建表格的插件
Apr 05 Javascript
JS中使用sort结合localeCompare实现中文排序实例
Jul 23 Javascript
JS组件系列之Bootstrap Icon图标选择组件
Jan 28 Javascript
Kindeditor在线文本编辑器如何过滤HTML
Apr 14 Javascript
jquery遍历table的tr获取td的值实现方法
May 19 Javascript
探讨AngularJs中ui.route的简单应用
Nov 16 Javascript
浅谈es6语法 (Proxy和Reflect的对比)
Oct 24 Javascript
express 项目分层实践详解
Dec 10 Javascript
vue实现跳转接口push 转场动画示例
Nov 01 Javascript
Vue中关闭弹窗组件时销毁并隐藏操作
Sep 01 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
将二维数组转为一维数组的2种方法
2014/05/26 PHP
PHP传参之传值与传址的区别
2015/04/24 PHP
PHP-FPM之Chroot执行环境详解
2015/08/03 PHP
PHP的命令行命令使用指南
2015/08/18 PHP
thinkPHP中验证码的简单使用方法
2015/12/26 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
浅谈javascript 函数内部属性
2015/01/21 Javascript
jQuery EasyUI实现右键菜单变灰不可用效果
2015/09/24 Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
2016/07/09 Javascript
angular实现表单验证及提交功能
2017/02/01 Javascript
原生JS实现跑马灯效果
2017/02/20 Javascript
Node.js和Express简单入门介绍
2017/03/24 Javascript
打造通用的匀速运动框架(实例讲解)
2017/10/17 Javascript
微信小程序scroll-x失效的完美解决方法
2018/07/18 Javascript
vue-cli3.0 脚手架搭建项目的过程详解
2018/10/19 Javascript
如何用Node写页面爬虫的工具集
2018/10/26 Javascript
vue单页面实现当前页面刷新或跳转时提示保存
2018/11/02 Javascript
基于js实现抽红包并分配代码实例
2019/09/19 Javascript
对vue中的事件穿透与禁止穿透实例详解
2019/10/28 Javascript
解决小程序无法触发SESSION问题
2020/02/03 Javascript
JS实现烟花爆炸效果
2020/03/10 Javascript
vue相同路由跳转强制刷新该路由组件操作
2020/08/05 Javascript
js实现电灯开关效果
2021/01/19 Javascript
Django与遗留的数据库整合的方法指南
2015/07/24 Python
举例讲解Python面向对象编程中类的继承
2016/06/17 Python
Python中的默认参数实例分析
2018/01/29 Python
python3编写ThinkPHP命令执行Getshell的方法
2019/02/26 Python
python实现身份证实名认证的方法实例
2019/11/08 Python
python集合能干吗
2020/07/19 Python
python获取百度热榜链接的实例方法
2020/08/25 Python
利于python脚本编写可视化nmap和masscan的方法
2020/12/29 Python
采用冷却技术的超自然舒适度:GhostBed床垫
2018/09/18 全球购物
《大江保卫战》教学反思
2014/04/11 职场文书
毕业生实习期转正自我鉴定
2014/09/26 职场文书
税务会计岗位职责
2015/04/02 职场文书
上课讲话检讨书范文
2015/05/07 职场文书