jquery插件制作教程 txtHover


Posted in Javascript onAugust 17, 2012

定义插件的结构骨架:

书中最开始使用的结构骨架如下:

jQuery.fn.fluginmane=function(){ 
return this.each(function(){ 


//code... 

}) 
}

这种结构不是很理想,特别书中提到,为了防止冲突例子不使用$,而使用jQuery。在这里,我们使用匿名函数的方式实现插件的结构骨架,这样就可以防止可能的冲突。也希望大家好好了解下匿名函数相关的知识。
(function($){ 
$.fn.fluginname=function(){ 


return this.each(function(){ 



//code... 


}); 

} 
})(jQuery);

注意点:

1.为了统一和规范,我们的插件文件都将以jquery.fluginname.js的形式命名(fluginname代表你插件的名字)。

2.我们使用到的函数都需要是私有的,不能被外部访问到,这样可保证插件不会受到外部的影响和干扰(匿名函数已经保证了这点)。

3.允许用户使用options控制插件的行为。

4.默认的options允许外部访问,这样用户就可以用最少的代码实现自定义化。

5.this.each()会遍历所有符合要求的对象,他本身是个jquery对象,插件最后返回该对象。其实通过这种方式就实现了javascript的链式模式。
我们的第一个插件:txtHover

1.代码实现:

(function($){ 
$.fn.txtHover=function(){ 


return this.each(function(){ 



$(this).text('text changed!'); 


}); 

} 
})(jQuery);

2.如何使用:

创建一个html文件,添加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"> 
<head> 
<title></title> 
<script type="text/javascript" src="Scripts/jquery-1.4.1.min.js"></script> 
<script type="text/javascript" src="Scripts/jquery.txtHover.js"></script> 
<script type="text/javascript"> 
$(document).ready(function () { 
$('#test').txtHover(); 
}); 
</script> 
</head> 
<body> 
<div id="test"> 
this is test.</div> 
</body> 
</html>

添加hover事件:
(function ($) { 
$.fn.txtHover = function () { 
return this.each(function () { 
var temp = $(this).text(); 
$(this).hover(function () { 
$(this).text('text changed!'); 
}, function () { 
$(this).text(temp); 
}); 
}); 
} 
})(jQuery);

第一个版本,当页面加载完毕之后,div的内容就被修改了,这样的设计没多大用处。我们最常用到的是,当鼠标移到到文字上面的时候产生一些变化。改进的插件添加了hover事件。首先我们把div的原始值保存在变量temp里面,当鼠标移动到div上面的时候,文字被替换,鼠标移出时,将文字替换回来。
添加自定义选项

为了方便用户更加灵活的使用,我们需要添加自定义的功能,插件代码修改:

(function ($) { 
$.fn.txtHover = function (options) { 
var defaults = { txt: 'text changed!' }; 
var opt = $.extend(defaults, options); 
return this.each(function () { 
var self = $(this); 
var temp = self.text(); 
self.hover(function () { 
self.text(opt.txt); 
}, function () { 
self.text(temp); 
}); 
}); 
} 
})(jQuery);

插件定义了一个变量defaults,设置了默认的文字信息。我们使用$.extend()(不了解这个函数的朋友可以去查阅资料)方法扩展了一个新变量opt,如果用户传入的options变量包含txt,则opt就使用用户传入的,否则就使用系统默认的。我们在系统中定义了 var self = $(this),来代替this对象。this在javascript中是个很恼人的对象,在不同函数上下文中所代表的对象会不同,将this传给一个另外的变量会避免程序出现一些错误。不熟悉的朋友很有必要好好掌握该知识点。

用户在html页面上调用插件的时候,可以自定义鼠标移到div上面时候的文字内容了。
$(document).ready(function () {

$('#test').txtHover({ txt: 'test' });
});

好了,今天的例子到此为止。

Javascript 相关文章推荐
用prototype实现的简单小巧的多级联动菜单
Mar 24 Javascript
学习ExtJS table布局
Oct 08 Javascript
JavaScript 获取当前时间戳的代码
Aug 05 Javascript
为jquery的ajaxfileupload增加附加参数的方法
Mar 04 Javascript
Javascript技术栈中的四种依赖注入小结
Feb 27 Javascript
封装获取dom元素的简单实例
Jul 08 Javascript
canvas时钟效果
Feb 16 Javascript
jQuery插件zTree实现更新根节点中第i个节点名称的方法示例
Mar 08 Javascript
详解使用JS如何制作简单的ASCII图与单极图
Mar 31 Javascript
vue.js实现的经典计算器/科学计算器功能示例
Jul 11 Javascript
百度小程序之间的页面通信过程详解
Jul 18 Javascript
jQuery实现简单弹幕制作
Dec 10 jQuery
IFrame跨域高度自适应实现代码
Aug 16 #Javascript
JSONP 跨域共享信息
Aug 16 #Javascript
js自执行函数的几种不同写法的比较
Aug 16 #Javascript
js三种排序算法分享
Aug 16 #Javascript
jQuery点击后一组图片左右滑动的实现代码
Aug 16 #Javascript
JavaScript高级程序设计 阅读笔记(二十) js错误处理
Aug 14 #Javascript
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
Aug 14 #Javascript
You might like
php实现下载限制速度示例分享
2014/02/13 PHP
PHP开发框架kohana中处理ajax请求的例子
2014/07/14 PHP
php比较两个字符串长度的方法
2015/07/13 PHP
PHP设计模式之工厂模式实例总结
2017/09/01 PHP
PHP-FPM 的管理和配置详解
2019/02/17 PHP
用JS判别浏览器种类以及IE版本的几种方法小结
2011/08/02 Javascript
jquery常用特效方法使用示例
2014/04/25 Javascript
jQuery实现无限往下滚动效果代码
2016/04/16 Javascript
JS本地刷新返回上一页代码
2016/07/25 Javascript
Angularjs 自定义服务的三种方式(推荐)
2016/08/02 Javascript
JS正则子匹配实例分析
2016/12/22 Javascript
JS使用正则表达式获取小括号、中括号及花括号内容的方法示例
2018/06/01 Javascript
原生JS实现的轮播图功能详解
2018/08/06 Javascript
鸿蒙系统中的 JS 开发框架
2020/09/18 Javascript
[00:32]2018DOTA2亚洲邀请赛iG出场
2018/04/03 DOTA
浅谈Python中copy()方法的使用
2015/05/21 Python
Python+Opencv识别两张相似图片
2020/03/23 Python
Python2.7.10以上pip更新及其他包的安装教程
2018/06/12 Python
pytorch索引查找 index_select的例子
2019/08/18 Python
python实现递归查找某个路径下所有文件中的中文字符
2019/08/31 Python
最小二乘法及其python实现详解
2020/02/24 Python
django haystack实现全文检索的示例代码
2020/06/24 Python
墨西哥巴士车票在线购买:ClickBus
2018/03/27 全球购物
活动志愿者自荐信
2014/01/27 职场文书
感恩母亲节活动方案
2014/03/04 职场文书
政府信息公开实施方案
2014/05/09 职场文书
尊老爱幼演讲稿
2014/09/04 职场文书
幼儿园感恩节活动方案2014
2014/10/11 职场文书
街道党风廉政建设调研报告
2015/01/01 职场文书
工程部文员岗位职责
2015/02/04 职场文书
“5.12”护士节主持词
2015/07/04 职场文书
《分数乘法》教学反思
2016/02/24 职场文书
Spring Cloud Gateway去掉url前缀
2021/07/15 Java/Android
教你如何让spark sql写mysql的时候支持update操作
2022/02/15 MySQL
手写Spirit防抖函数underscore和节流函数lodash
2022/03/22 Javascript
Vue OpenLayer 为地图绘制风场效果
2022/04/24 Vue.js