JQuery插件开发简单实例
经常使用Jquery的各种插件,却对如何开发插件一无所知,以为是一件很麻烦的事儿?其实不然,下面通过一个简单的实例,来看一下Jquery Plugin的开发。
先看DEMO:动画菜单
不用插件如何实现以上效果:
$(document).ready(function() { $('ul#menu li:even').addClass('even'); $('ul#menu li a').mouseover(function() { $(this).animate( { paddingLeft:"20px" }, { queue:false, duration:500 }); }).mouseout(function() { $(this).animate( { paddingLeft:"0" }, { queue:true, duration:500 }); }).click(function() { $(this).animate( { fontSize:"20px" }, { queue:false, duration:500 });
}); });
我们希望封装成插件:
$(document).ready(function() { $(#menu).animateMenu({
padding:20
}) });
JQuery插件结构
(function($){
//定义JQuery插件
$.fn.extend({ //插件名称
pluginname: function() {
//对选择出的每个Jquery对象执行操作
return this.each(function() { //插件代码 });
}
}); })(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);
动画菜单插件代码
(function($){
$.fn.extend({
//插件名 - animatemenu
animateMenu: function(options) {
//默认设置
var defaults = {
animatePadding: 60,
defaultPadding: 10,
evenColor: '#ccc',
oddColor: '#eee'
}; var options = $.extend(defaults, options); return this.each(function() {
var o =options; //当前菜单
var obj = $(this); //所有菜单项
var items = $("li", obj); //设置背景色
$("li:even", obj).css('background-color', o.evenColor);
$("li:odd", obj).css('background-color', o.oddColor); //添加鼠标事件
items.mouseover(function() {
$(this).animate({paddingLeft: o.animatePadding}, 300); }).mouseout(function() {
$(this).animate({paddingLeft: o.defaultPadding}, 300);
}); });
}
});
})(jQuery);
全部测试代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head>
<title></title>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script>
(function($){
$.fn.extend({
animateMenu: function(options) {
var defaults = {
animatePadding: 60,
defaultPadding: 10,
evenColor: '#ccc',
oddColor: '#eee',
}; var options = $.extend(defaults, options); return this.each(function() {
var o =options;
var obj = $(this);
var items = $("li", obj); $("li:even", obj).css('background-color', o.evenColor);
$("li:odd", obj).css('background-color', o.oddColor); items.mouseover(function() {
$(this).animate({paddingLeft: o.animatePadding}, 300); }).mouseout(function() {
$(this).animate({paddingLeft: o.defaultPadding}, 300); });
});
}
});
})(jQuery); </script> <script type="text/javascript">
$(document).ready(function() {
$('#menu').animateMenu({animatePadding: 30, defaultPadding:10});
});
</script>
<style>
body {font-family:arial;font-style:bold}
a {color:#666; text-decoration:none}
#menu {list-style:none;width:160px;padding-left:10px;}
#menu li {margin:0;padding:5px;cursor:hand;cursor:pointer}
</style>
</head>
<body>
<ul id="menu">
<li>Home</li>
<li>Posts</li>
<li>About</li>
<li>Contact</li>
</ul>
</body>
</html>
JQuery插件开发简单实例的更多相关文章
- 一个简单的jQuery插件开发实例
两年前写的一个简单的jQuery插件开发实例,还是可以看看的: <script type="text/javascript" src="jquery-1.7.2.m ...
- jQuery简单实例
jQuery 选择器 $(this).hide() 演示 jQuery 的 hide() 函数,隐藏当前的 HTML 元素. $("p").hide() 演示 jQuery 的 h ...
- jQuery插件开发 - 其实很简单
[前言] jQuery已经被广泛使用,凭借其简洁的API,对DOM强大的操控性,易扩展性越来越受到web开发人员的喜爱,我在社区也发布了很多的jQuery插件,经常有人询问一些技巧,因此干脆写这么一篇 ...
- jquery实现表单验证简单实例
/* 描述:基于jquery的表单验证插件. */ (function ($) { $.fn.checkForm = function (options) { var root = this; //将 ...
- 【转】简单的jQuery插件开发方法
在实际开发工作中,总会碰到像滚动,分页,日历等展示效果的业务需求,对于接触过jQuery以及熟悉jQuery使用的人来说,首先想到的肯定是寻找现有的jQuery插件来满足相应的展示需求.目前页面中常用 ...
- jquery翻页turnjs简单实例
jquery翻页turnjs简单实例<pre><div id="flipbook"> <div class="hard" styl ...
- PHP+jQuery开发简单的翻牌抽奖实例
PHP+jQuery开发简单的翻牌抽奖实例,实现流程:页面放置6个方块作为奖项,当抽奖者点击某一块时,方块翻转到背面,显示中奖信息,这个奖品是随机的,不是固定的. 在页面上放置6个奖项: <ul ...
- JavaScript学习笔记(四)——jQuery插件开发与发布
jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定好用, ...
- JavaScript学习总结(四)——jQuery插件开发与发布
jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定好用, ...
随机推荐
- EXT.NET 使用总结(1)
前言 从系统改版到现在,将近半年的时间,原本陌生的Ext.NET的UI框架,也慢慢的熟悉了.总的来说,这个UI框架还是很优秀的,但是也没有100%完美的产品(老系统使用easy ui其实也挺好的).趁 ...
- java中的final的使用
1.final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的.在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会再被扩展,那么就设计为fin ...
- eclipse运行速度优化(解决狂读盘、发布慢、CPU100%等问题)
转自:http://blog.csdn.net/wyp_810618/article/details/8953921 我的ECLIPSE运行时速度奇慢,具体表现为: 1.只要ECLIPSE启动后,硬盘 ...
- android中四大组件之间相互通信
好久没有写有关android有关的博客了,今天主要来谈一谈android中四大组件.首先,接触android的人,都应该知道android中有四大组件,activity,service,broadca ...
- linux yum安装jdk
>>>>>>>>>> 实例: yum安装jdk 1.查看当前的jdk版本,并卸载 (注1:rpm -qa ###解释:查询所有安装的rpm包 ...
- PHP require和include的区别
require一个文件存在错误的话,那么程序就会中断执行了,并显示致命错误 include一个文件存在错误的话,那么程序不会中端,而是继续执行,并显示一个警告错误. 以下为补充:1. include有 ...
- RStudio技巧01_美化RStudio的帮助页面
R中的package及其函数实在太多,经常遇到不会使用或者忘记如何使用的的package和函数,所以总会查阅帮助文档,在Rstudio中提供了专门的help面板,当遇到不懂的package或者函数时只 ...
- Bugtags 测试平台(支持ios、android)
官网:https://bugtags.com/ 注意:小米手机 授权 打开漂浮窗 App 集成 Bugtags SDK 后,测试人员就可直接在 App 里所见即所得的提交 Bug; SDK 会自动截屏 ...
- MySQL黑科技用法总结(持续更新)
1.利用set插入数值 insert [into] 表名 set 列=值. 2.利用select对字段进行测试 ) ,并且有2条记录 ',num1+1的计算结果 tips:相等返回1,否则返回0 f ...
- html5新特性
这一篇博文不会告诉你怎么去使用html5的新特性,只会给你总结一下新特性------对于好学的人可以把这篇文章当做一个目录 对于初接触的人来说是一个导向 对于已经接触过的人来说是一个检测你掌握程度的检 ...