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 相关文章推荐
Javascript 不能释放内存.
Sep 07 Javascript
jQuery代码优化之基本事件
Nov 01 Javascript
Javascript控制页面链接在新窗口打开具体方法
Aug 16 Javascript
html文本框提示效果的示例代码
Jun 28 Javascript
jQuery trigger()方法用法介绍
Jan 13 Javascript
DOM 事件流详解
Jan 20 Javascript
javascript+HTML5的Canvas实现Lab单车动画效果
Aug 07 Javascript
js封装成插件_Canvas统计图插件编写实例
Sep 12 Javascript
jQuery+Cookie实现切换皮肤功能【附源码下载】
Mar 25 jQuery
小程序rich-text组件如何改变内部img图片样式的方法
May 22 Javascript
layui监听下拉选框选中值变化的方法(包含监听普通下拉选框)
Sep 24 Javascript
Vue数据双向绑定原理实例解析
May 15 Javascript
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几个数学计算的内部函数学习整理
2011/08/06 PHP
CodeIgniter中使用cookie的三种方式详解
2014/07/18 PHP
php实现的简单美国商品税计算函数
2015/07/13 PHP
PHP生成随机字符串(3种方法)
2015/09/25 PHP
分享50个提高PHP执行效率的技巧
2015/12/26 PHP
PHP文件下载实例代码浅析
2016/08/17 PHP
PHP中遍历数组的三种常用方法实例分析
2019/06/24 PHP
csdn 论坛技术区平均给分功能
2009/11/07 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
2015/09/23 Javascript
jQuery UI Bootstrap是什么?
2016/06/17 Javascript
基于jQuery实现页面搜索功能
2020/03/26 Javascript
vue.js入门教程之基础语法小结
2016/09/01 Javascript
Javascript 实现简单计算器实例代码
2016/10/23 Javascript
基于Marquee.js插件实现的跑马灯效果示例
2017/01/25 Javascript
在小程序Canvas中使用measureText的方法示例
2018/10/19 Javascript
JavaScript私有变量实例详解
2019/01/24 Javascript
vue v-for循环重复数据无法添加问题解决方法【加track-by='索引'】
2019/03/15 Javascript
浅谈一种让小程序支持JSX语法的新思路
2019/06/16 Javascript
Vuejs中的watch实例详解(监听者)
2020/01/05 Javascript
js制作提示框插件
2020/12/24 Javascript
[01:06:07]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS CIS
2014/05/22 DOTA
[55:02]2014 DOTA2国际邀请赛中国区预选赛 HGT VS Orenda
2014/05/21 DOTA
Python实现带百分比的进度条
2016/06/28 Python
python下os模块强大的重命名方法renames详解
2017/03/07 Python
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
Python中包的用法及安装
2020/02/11 Python
Pymysql实现往表中插入数据过程解析
2020/06/02 Python
python安装后的目录在哪里
2020/06/21 Python
汽车装潢店创业计划书范文
2014/02/05 职场文书
新任教师自我鉴定
2014/02/24 职场文书
集中整治工作方案
2014/05/01 职场文书
专题组织生活会思想汇报
2014/10/01 职场文书
世界遗产导游词
2015/02/13 职场文书
浅谈Go语言多态的实现与interface使用
2021/06/16 Golang
Python编程编写完善的命令行工具
2021/09/15 Python
Oracle 11g数据库使用expdp每周进行数据备份并上传到备份服务器
2022/06/28 Oracle