自己动手开发jQuery插件教程


Posted in Javascript onAugust 25, 2011

因为工作需要,所以这几天琢磨了一下关于jQuery插件开发的问题,经过一天鏖战,终于完成自己动手做的第一个jQuery插件,对于俺这种见了css就头痛的人来说,一天时间8小时,保守估计有5个小时在弄css(我css文盲级别,形容得还不够贴切,如果说文盲不会写字,只会说话,那我是连话都不会说的级别。),好了,废话少说,切入正题。

首先要了解jQuery插件开发分两种,1.类级别的插件开发。2.对象级别插件开发。

什么? 你居然问什么是类级别和什么是对象级别?

类级别你可以理解为拓展jquery类,最简单的$.post(...);

对象级别则可以理解为基于对象的拓展,如$("#Me").fuck(...); 这里这个fuck呢,就是基于对象的拓展了。点到即止,想深入的童鞋请花RMB买书Or网上查资料,书上比俺介绍得更清楚。so...Next...

至于您要写一个什么东东呢?就轮到前面提到的类级别和对象级别的造型登场了,因为这写法大千世界无奇不有,千奇百怪,各有千秋,写法规范也不统一,俺就按俺觉得最简便的方法写了,Hava a Look!

<script type="text/javascript"> 
jQuery.msg = function () { 
alert("123"); 
}; 
</script> 
<script type="text/javascript"> 
$(function () { 
$.msg(); 
}); 
</script>

类级别写法:jQuery.插件名称=function(){.....};
调用方法:$.插件名称();
暴露参数这些东西,先暂时不提到。一步步来..
上面这玩意儿呢,弹出对话框插件,这么说,是先理解要紧,什么是插件,什么是类级别的插件?来看一下页面启动的效果,上图上真相,你懂的..
自己动手开发jQuery插件教程
来比较一下对象级别插件写法:Go on!
(function($) { 
$.fn.pluginName = function() { 
// 代码区域。 
}; 
})(jQuery);

对象级别写法:$.fn.插件名称 = function(){};多了一个fn,没错,是fn! fn!!! fn!!!

调用方法:$("#Me").插件名称();

稍微说一下,$.插件名称();是通过$访问调用jquery中的全局函数,直接可以通过jquery或者美元$调用,从而实现一些效果。

$("#Me").插件名称();是通过一个jquery对象所调用的一个函数,什么? 你居然发现这个写法外面一层多了个东东? 阿? 你问怎么回事?

The First,我们必须先了解一下闭包这个玩意儿的造型(框架),Look!,这就是传说中用来开发jQuery插件的东东

(function($){ 
//这里是您写东东的地方,不收地税,工商税,个人所得税等..放心大胆使用。 
})(jQuery);

(function($){ //这里是您写东东的地方,不收地税,工商税,个人所得税等..放心大胆使用。})(jQuery);

这里function 后面的$参数,形参,在函数体内部的使用呢,$就是当前您当前整在调用该函数的对象了,这样就能干很多事了....你懂的。

用一个tabs面板切换插件来详细演示一下jQuery对象级别插件的具体开发,直接上代码。

首先上HTML:

<!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"> 
<head> 
<title></title> 
<script src="jquery-1.6.2.min.js" type="text/javascript"></script> 
<script src="jquery.tabs.js" type="text/javascript"></script> 
<link href="tabs.css" rel="stylesheet" type="text/css" /> 
<script type="text/javascript"> 
$(function () { 
$("#mytabs").tabs(); 
}); 
</script> 
</head> 
<body> 
<!--tabs示例--> 
<div id="mytabs"> 
<!--选项卡区域--> 
<ul> 
<li><a href="#tabs1">选项1</a></li> 
<li><a href="#tabs2">选项2</a></li> 
<li><a href="#tabs3">选项3</a></li> 
</ul> 
<!--面板区域--> 
<div id="tabs1">11111</div> 
<div id="tabs2">22222</div> 
<div id="tabs3">33333</div> 
</div> 
</body> 
</html>

再上插件源码:

/*
tabs面板插件,版本1.0(2011.08.24)
用法:$("#myDiv").tabs({switchingMode:"click"});
参数解释:switchingMode是面板切换的模式,如switchingMode:"mouseover"则鼠标移动至选项卡切换面板,默认为click。
整体tabs骨架不变,依然是常用的结构如下:

<div id="tabs"> 
选项卡区域ul 
<ul> 
<li><a href="#div1">选项1</a></li> 
<li><a href="#div2">选项2</a></li> 
</ul> 
面板区域div 
<div id="div1">面板1</div> 
<div id="div2">面板2</div> 
</div>

样式:此样式为默认无任何效果样式,可根据需要修改插件样式。
*/ 
; (function ($) { 
$.fn.tabs = function (options) { 
var defualts = { switchingMode: "click" }; 
var opts = $.extend({}, defualts, options); 
var obj = $(this); 
var clickIndex = 0; 
obj.addClass("tabsDiv"); 
$("ul li:first", obj).addClass("tabsSeletedLi"); 
$("ul li", obj).not(":first").addClass("tabsUnSeletedLi"); 
$("div", obj).not(":first").hide(); 
$("ul li", obj).bind(opts.switchingMode, function () { 
if (clickIndex != $("ul li", obj).index($(this))) { 
clickIndex = $("ul li", obj).index($(this)); 
$(".tabsSeletedLi", obj).removeClass("tabsSeletedLi").addClass("tabsUnSeletedLi"); 
$(this).removeClass("tabsUnSeletedLi").addClass("tabsSeletedLi"); 
var divid = $("a", $(this)).attr("href").substr(1); 
$("div", obj).hide(); 
$("#" + divid, obj).show(); 
}; 
}); 
}; 
})(jQuery);

接下来上插件样式:
body{background-color: black;} 
.tabsDiv{width: 500px;height: 350px;margin-top: 0px;margin-left: 0px;} 
.tabsDiv ul{width: 500px;height: 20px;list-style: none;background-color: black;margin-bottom: 0px;margin: 0px;padding: 0px;} 
.tabsDiv div{width: 500px;height: 330px;background-color: white;} 
.tabsSeletedLi{width: 100px;height: 20px;background-color: white;float: left;text-align: center;} 
.tabsSeletedLi a{width: 100px;height: 20px;color: black;} 
.tabsUnSeletedLi{width: 100px;height: 20px;background-color: black;float: left;text-align: center;} 
.tabsUnSeletedLi a{width: 100px;height: 20px;color: white;}

最终效果图,你懂的:
自己动手开发jQuery插件教程

自己动手开发jQuery插件教程

自己动手开发jQuery插件教程
原文:http://www.cnblogs.com/JohnStart/archive/2011/08/24/jQueryPlugin.html
Javascript 相关文章推荐
De facto standard 世界上不可思议的事实标准
Aug 29 Javascript
基于Jquery的仿Windows Aero弹出窗(漂亮的关闭按钮)
Sep 28 Javascript
浅谈JS之iframe中的窗口
Sep 13 Javascript
Vue.js系列之vue-router(上)(3)
Jan 03 Javascript
JS作用域链详解
Jun 26 Javascript
js神秘的电报密码 哈弗曼编码实现
Sep 10 Javascript
Vue学习之组件用法实例详解
Jan 06 Javascript
vue 实现在同一界面实现组件的动态添加和删除功能
Jun 16 Javascript
解决vue单页面应用进入页面加载所有 js 的问题
Aug 12 Javascript
vue项目页面嵌入代码块vue-prism-editor的实现
Oct 30 Javascript
vue基于Echarts的拖拽数据可视化功能实现
Dec 04 Vue.js
Vue.js中v-for指令的用法介绍
Mar 13 Vue.js
JQuery里面的几种选择器 查找满足条件的元素$(&quot;#控件ID&quot;)
Aug 23 #Javascript
基于JQuery的Select选择框的华丽变身
Aug 23 #Javascript
MooTools 页面滚动浮动层智能定位实现代码
Aug 23 #Javascript
js页面滚动时层智能浮动定位实现(jQuery/MooTools)
Aug 23 #Javascript
jQuery页面滚动浮动层智能定位实例代码
Aug 23 #Javascript
jqGrid jQuery 表格插件测试代码
Aug 23 #Javascript
30个精美的jQuery幻灯片效果插件和教程
Aug 23 #Javascript
You might like
ecshop 订单确认中显示省市地址信息的方法
2010/03/15 PHP
php地址引用(php地址引用的效率问题)
2012/03/23 PHP
php二维数组排序方法(array_multisort usort)
2013/12/25 PHP
destoon之一键登录设置
2014/06/21 PHP
php集成环境xampp中apache无法启动问题解决方案
2014/11/18 PHP
Javascript 获取字符串字节数的多种方法
2009/06/02 Javascript
Jquery网页出现的乱码问题的三种解决方法
2013/06/30 Javascript
jquery sortable的拖动方法示例详解
2014/01/16 Javascript
node.js正则表达式获取网页中所有链接的代码实例
2014/06/03 Javascript
javascript使用正则表达式检测IP地址
2014/12/03 Javascript
分析了一下JQuery中的extend方法实现原理
2015/02/27 Javascript
jquery实现右键菜单插件
2015/03/29 Javascript
jQuery实现输入框邮箱内容自动补全与上下翻动显示效果【附demo源码下载】
2016/09/20 Javascript
DropDownList控件绑定数据源的三种方法
2016/12/24 Javascript
基于angular实现模拟微信小程序swiper组件
2017/06/11 Javascript
JavaScript实现无限级递归树的示例代码
2019/03/29 Javascript
Openlayers实现距离面积测量
2020/09/28 Javascript
使用Vant完成Dialog弹框案例
2020/11/11 Javascript
[03:51]吞吞映像 每周精彩击杀top10第二弹
2014/06/25 DOTA
Python随手笔记之标准类型内建函数
2015/12/02 Python
python爬虫入门教程--正则表达式完全指南(五)
2017/05/25 Python
Python实现的网页截图功能【PyQt4与selenium组件】
2018/07/12 Python
Python Excel处理库openpyxl使用详解
2019/05/09 Python
python实现堆排序的实例讲解
2020/02/21 Python
Python实现定时监测网站运行状态的示例代码
2020/09/30 Python
纯CSS打造(无图像无js)的非常流行的讲话(语音)气泡效果
2012/12/28 HTML / CSS
Html5移动端适配IphoneX等机型的方法
2019/06/25 HTML / CSS
床上用品全球在线购物:BeddingInn
2016/12/18 全球购物
美国隐形眼镜销售网站:ContactsDirect
2017/10/28 全球购物
伦敦最受欢迎的蛋糕店:Konditor & Cook
2019/11/01 全球购物
大学生职业生涯规划书范文
2014/01/14 职场文书
学历公证委托书
2014/04/09 职场文书
2015年街道办事处工作总结
2015/05/22 职场文书
实验室安全管理制度
2015/08/05 职场文书
生日祝酒词大全
2015/08/10 职场文书
2016年小学推普宣传周活动总结
2016/04/06 职场文书