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 - HTML的request类
Jul 15 Javascript
Three.js源码阅读笔记(光照部分)
Dec 27 Javascript
IE的fireEvent方法概述及应用
Feb 22 Javascript
Bootstrap下拉菜单Dropdowns的实现代码
Mar 17 Javascript
基于EasyUI的基础之上实现树形功能菜单
Jun 28 Javascript
AngularJS创建一个上传照片的指令实例代码
Feb 24 Javascript
vue技术分享之你可能不知道的7个秘密
Apr 09 Javascript
vue通过点击事件读取音频文件的方法
May 30 Javascript
axios全局注册,设置token,以及全局设置url请求网段的方法
Sep 25 Javascript
Angular6 Filter实现页面搜索的示例代码
Dec 02 Javascript
Vue组件实现触底判断
Jun 26 Javascript
electron+vue实现div contenteditable截图功能
Jan 07 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网页显示各种语法错误
2013/09/23 PHP
php 参数过滤、数据过滤详解
2015/10/26 PHP
windows8.1下Apache+Php+MySQL配置步骤
2015/10/30 PHP
如何使用jQuery Draggable和Droppable实现拖拽功能
2013/07/05 Javascript
javascript操作table(insertRow,deleteRow,insertCell,deleteCell方法详解)
2013/12/16 Javascript
使用jquery解析XML示例代码
2014/09/05 Javascript
Javascript基础教程之数据类型 (数值 Number)
2015/01/18 Javascript
jQuery表单验证功能实例
2015/08/28 Javascript
javascript实现拖动元素交换位置
2015/11/29 Javascript
如何利用JSHint减少JavaScript的错误
2016/08/23 Javascript
JavaScript生成验证码并实现验证功能
2016/09/24 Javascript
Extjs表单输入框异步校验的插件实现方法
2017/03/20 Javascript
Echarts基本用法_动力节点Java学院整理
2017/08/11 Javascript
jQuery 中msgTips 顶部弹窗效果实现代码
2017/08/14 jQuery
nodejs+express搭建多人聊天室步骤
2018/02/12 NodeJs
vue将毫秒数转化为正常日期格式的实例
2018/09/16 Javascript
vue实现按需加载组件及异步组件功能
2019/05/27 Javascript
解决微信小程序中的滚动穿透问题
2019/09/16 Javascript
浅谈React中组件逻辑复用的那些事儿
2020/05/21 Javascript
JavaScript undefined及null区别实例解析
2020/07/21 Javascript
[00:49]完美世界DOTA2联赛10月28日开团时刻:随便打
2020/10/29 DOTA
Python专用方法与迭代机制实例分析
2014/09/15 Python
Python实现抓取百度搜索结果页的网站标题信息
2015/01/22 Python
python使用PyGame模块播放声音的方法
2015/05/20 Python
Python实现批量下载图片的方法
2015/07/08 Python
浅谈python中set使用
2016/06/30 Python
详解Python Opencv和PIL读取图像文件的差别
2019/12/27 Python
python字符串替换re.sub()实例解析
2020/02/09 Python
Python定时从Mysql提取数据存入Redis的实现
2020/05/03 Python
通过案例解析python鸭子类型相关原理
2020/10/10 Python
Opencv+Python识别PCB板图片的步骤
2021/01/07 Python
CSS3 @media的基本用法总结
2019/09/10 HTML / CSS
丝芙兰新加坡官网:Sephora新加坡
2018/12/04 全球购物
Currentbody法国:健康与美容高科技产品
2020/08/16 全球购物
触摸春天教学反思
2014/02/03 职场文书
2014年涉外离婚协议书范本
2014/11/20 职场文书