在上一篇笔记本中,讲解了如何利用jQuery扩展全局函数和对象:DOM笔记(六):怎么进行JQuery扩展?

在这篇笔记本中,将开发一个简单的动画插件,名称是example-plugin,用其实现一个简单的功能:光标移动到目标标签,标签移动,改变背景色;光标离开时,标签恢复原来的样式。

因为是jQuery对象的扩展,采用jQuery.fn.extend()进行扩展,插件名是dwqs,并且使用闭包:

/*
*示例插件功能:
*光标移动到目标标签,标签移动,改变背景色;光标离开时,标签恢复原来的样式
*/
(function($)
{
// $.fn.extend()进行对象扩展
$.fn.extend({
// 插件功能实现
dwqs:function(options)
{
//主体
}
});
})(jQuery);

为插件定义默认参数,并用$.extend()扩展:

// 为插件参数设定默认值
var defaults =
{
padding:20, //移动距离
time:300, //移动时间
color:"red" //背景颜色
};
// 使用$.extend()覆盖插件中的默认值
var options = $.extend(defaults,options);

添加功能代码

// 将this引用的DOM元素转为JQuery对象
var obj = $(this);
// 鼠标经过时添加动画
obj.mouseover(function()
{
obj.animate({paddingLeft:options.padding},options.time);
obj.css("backgroundColor",options.color);
});
// 鼠标离开时恢复
obj.mouseout(function()
{
obj.animate({paddingLeft:0},options.time);
obj.css("backgroundColor","");
});

插件的文件名命名为example-plugin.js保存,完整代码如下:

/*
*示例插件功能:
*光标移动到目标标签,标签移动,改变背景色;光标离开时,标签恢复原来的样式
*/
(function($)
{
// $.fn.extend()进行对象扩展
$.fn.extend({
// 插件功能实现
dwqs:function(options)
{
// 为插件参数设定默认值
var defaults =
{
padding:20, //移动距离
time:300, //移动时间
color:"red" //背景颜色
};
// 使用$.extend()覆盖插件中的默认值
var options = $.extend(defaults,options);
return this.each(function()
{
// 将this引用的DOM元素转为JQuery对象
var obj = $(this);
// 鼠标经过时添加动画
obj.mouseover(function()
{
obj.animate({paddingLeft:options.padding},options.time);
obj.css("backgroundColor",options.color);
});
// 鼠标离开时恢复
obj.mouseout(function()
{
obj.animate({paddingLeft:0},options.time);
obj.css("backgroundColor","");
});
});
} //不要有;号 否则出错
});
})(jQuery);

测试插件:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>插件测试</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.example-plugin.js"></script>
</head>
<body>
<h2>自定义JQuery插件测试</h2>
<div>
<div style="border:1px solid red;width:200px;">JavaScript技术</div>
<div style="border:1px solid red;width:200px;">DOM技术</div>
<div style="border:1px solid red;width:200px;">CSS技术</div>
<div style="border:1px solid red;width:200px;">JQuery技术</div>
</div>
<script type="text/javascript">
$(document).ready(function()
{
$("div>div").dwqs({padding:35,time:500,color:"#ccc"});
});
</script>
</body>
</html>

效果演示:http://jqplugin.sinaapp.com/test.html

代码下载:http://download.csdn.net/detail/u011043843/8235387

原文首发:http://www.ido321.com/1333.html

DOM笔记(七):开发JQuery插件的更多相关文章

  1. 教你开发jQuery插件(转)

    教你开发jQuery插件(转) 阅读目录 基本方法 支持链式调用 让插件接收参数 面向对象的插件开发 关于命名空间 关于变量定义及命名 压缩的好处 工具 GitHub Service Hook 原文: ...

  2. 开发JQuery插件(转)

    教你开发jQuery插件(转)   阅读目录 基本方法 支持链式调用 让插件接收参数 面向对象的插件开发 关于命名空间 关于变量定义及命名 压缩的好处 工具 GitHub Service Hook 原 ...

  3. 开发jQuery插件的基本步骤

    在进行开发jQuery插件前,首先要了解一些知识: 1.闭包 1.1.闭包的作用: · 避免全局依赖 · 避免第三方破坏 · 兼容jQuery操作符'$'和jQuery 1.2.闭包的形式 (func ...

  4. 自己动手开发jQuery插件

    因为工作需要,所以这几天琢磨了一下关于jQuery插件开发的问题,经过一天鏖战,终于完成自己动手做的第一个jQuery插件,对于俺这种见了css就蛋疼菊紧的人来说,一天时间8小时,保守估计有5个小时在 ...

  5. 快速开发 jQuery 插件的 10 大技巧(转)

    转自:http://www.oschina.net/news/41776/jquery-10-tips 在开发过很多 jQuery 插件以后,我慢慢的摸索出了一套开发jQuery插件比较标准的结构和模 ...

  6. 快速开发 jQuery 插件的 10 大技巧

    在开发过很多 jQuery 插件以后,我慢慢的摸索出了一套开发jQuery插件比较标准的结构和模式.这样我就可以 copy & paste 大部分的代码结构,只要专注最主要的逻辑代码就行了. ...

  7. 如何开发jQuery插件

    一:普及JQuery知识 知识1:用JQuery写插件时,最核心的方法有如下两个: $.extend(object) 可以理解为,为JQuery 类添加一个静态方法. $.fn.extend(obje ...

  8. 快速开发jQuery插件的10大技巧

    原文链接:http://wiki.itivy.com/?p=36 在开发过很多 jQuery 插件以后,我慢慢的摸索出了一套开发jQuery插件比较标准的结构和模式.这样我就可以 copy & ...

  9. 快速开发 jQuery 插件的 10 大技巧(转)

    1. 把你的代码全部放在闭包里面 这是我用的最多的一条.但是有时候在闭包外面的方法会不能调用.不过你的插件的代码只为你自己的插件服务,所以不存在这个问题,你可以把所有的代码都放在闭包里面.而方法可能应 ...

随机推荐

  1. 调试EF源代码环境配置

    下载EF6的源代码,运行build编译,Nuget会自动下载所需的DLL. 打开EF的工程,可以在EF解决方案下直接新建调试用的项目代码 添加EF引用时选择解决方案中的Entity Framework ...

  2. SSIS ->> Error Handling

    Event Handler Each task and container raises events as it runs, such as an OnError event, among seve ...

  3. hdu-4893-Wow! Such Sequence!-线段树【2014多校第三场-J】

    题意:一个初始为0的数组,支持三种操作:1.向第k个数添加d,(|d| < 2^31);2.把[l, r]区间内的数字都换成与它最相近的Fibonacci数;3.询问[l, r]区间的和. 思路 ...

  4. Evaluate Reverse Polish Notation(堆栈)

    Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, -, ...

  5. zoj 3822 Domination (概率dp 天数期望)

    题目链接 参考博客:http://blog.csdn.net/napoleon_acm/article/details/40020297 题意:给定n*m的空棋盘 每一次在上面选择一个空的位置放置一枚 ...

  6. EditText控件实现只读

      android的EditText控件实现只读只需设置三个方法: editText.setCursorVisible(false);//隐藏光标 editText.setFocusable(fals ...

  7. C# 类的访问修改符

    C#共有五种修饰符:public.private.protected.internal.protected internal. ◆public:公有,对所有类可见,不受任何限制 ◆protected: ...

  8. 基于百度地图js进行地理定位

    http://www.mengxiangchaoren.com/jquery.select.position.min.js 使用方法 $("#myCity").renderSele ...

  9. codeforces 430 A Points and Segments (easy)

    题意:给出n个点,m个区间,需要给这些点涂上蓝色或者红色,使得每个区间里面的点的红色的点的个数与蓝色的点的个数的差值小于1 唉,题目的标题就标注了一个easy= = 最开始做的时候对点还有区间都排序了 ...

  10. HDU 5327 Olympiad (水题)

    题意:beautiful数字定义为该数字中的十进制形式每一位都不同,给一个区间[L,R],求该区间中有多少个beautiful数字. 思路:数字不大,直接暴力预处理,再统计区间[1,i]有多少个,用c ...