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 相关文章推荐
解密效果
Jun 23 Javascript
JavaScript 字符编码规则
May 04 Javascript
jQuery平滑旋转幻灯片特效代码分享
Sep 07 Javascript
javascript实现网页端解压并查看zip文件
Dec 15 Javascript
基于javascript实现窗口抖动效果
Jan 03 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
Aug 03 Javascript
关于JavaScript中事件绑定的方法总结
Oct 26 Javascript
详解Vue中使用v-for语句抛出错误的解决方案
May 04 Javascript
JavaScript用200行代码制作打飞机小游戏实例
Jun 21 Javascript
详解js跨域请求的两种方式,支持post请求
May 05 Javascript
Vue实现按钮旋转和移动位置的实例代码
Aug 09 Javascript
基于Koa2写个脚手架模拟接口服务的方法
Nov 27 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
PHP 处理图片的类实现代码
2009/10/23 PHP
PHP魔术方法的使用示例
2015/06/23 PHP
基于 Swoole 的微信扫码登录功能实现代码
2018/01/15 PHP
thinkphp5.0整合phpsocketio完整攻略(绕坑)
2018/10/12 PHP
javascript调试过程中找不到哪里出错的可能原因
2013/12/16 Javascript
Js表格万条数据瞬间加载实现代码
2014/02/20 Javascript
JavaScript不刷新实现浏览器的前进后退功能
2014/11/05 Javascript
js控制网页前进和后退的方法
2015/06/08 Javascript
JS基于面向对象实现的拖拽库实例
2015/09/24 Javascript
jQuery实现form表单元素序列化为json对象的方法
2015/12/09 Javascript
Knockoutjs 学习系列(一)ko初体验
2016/06/07 Javascript
jQuery 判断是否包含在数组中Array[]的方法
2016/08/03 Javascript
JavaScript代码里的判断小结
2016/08/22 Javascript
通过AngularJS实现图片上传及缩略图展示示例
2017/01/03 Javascript
js实现带三角符的手风琴效果
2017/03/01 Javascript
基于vue监听滚动事件实现锚点链接平滑滚动的方法
2018/01/17 Javascript
讲解vue-router之什么是嵌套路由
2018/05/28 Javascript
React如何解决fetch跨域请求时session失效问题
2018/11/02 Javascript
JavaScript代码调试方法实例小结
2019/01/05 Javascript
vue滚动固定顶部及修改样式的实例代码
2019/05/30 Javascript
解决layer.open弹出框不能获取input框的值为空的问题
2019/09/10 Javascript
Vuex的实战使用详解
2019/10/31 Javascript
[08:53]DOTA2每周TOP10 精彩击杀集锦vol.9
2014/06/26 DOTA
Python使用Flask框架同时上传多个文件的方法
2015/03/21 Python
通过Python爬虫代理IP快速增加博客阅读量
2016/12/14 Python
通过实例学习Python Excel操作
2020/01/06 Python
Python使用文件操作实现一个XX信息管理系统的示例
2020/07/02 Python
荣耀俄罗斯官网:HONOR俄罗斯
2020/10/31 全球购物
生物化学研究助理员求职信
2013/10/09 职场文书
个人自荐信
2013/12/05 职场文书
大二法学专业职业生涯规划范文
2014/02/12 职场文书
统计员岗位职责范本
2015/04/14 职场文书
毕业证明模板
2015/06/19 职场文书
学生会招新宣传语
2015/07/13 职场文书
go:垃圾回收GC触发条件详解
2021/04/24 Golang
Python+Pillow+Pytesseract实现验证码识别
2022/05/11 Python