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 操作文件 实现方法小结
Jul 02 Javascript
javascript将数组插入到另一个数组中的代码
Jan 10 Javascript
java与javascript之间json格式数据互转介绍
Oct 29 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
Jan 11 Javascript
php is_numberic函数造成的SQL注入漏洞
Mar 10 Javascript
Jsonp post 跨域方案
Jul 06 Javascript
实例代码详解javascript实现窗口抖动及qq窗口抖动
Jan 04 Javascript
JavaScript高级程序设计(第三版)学习笔记1~5章
Mar 11 Javascript
JQuery 封装 Ajax 常用方法(推荐)
May 21 jQuery
jquery animate动画持续运动的实例
Nov 29 jQuery
Vue中使用vue-i18插件实现多语言切换功能
Apr 25 Javascript
JS实现可以用键盘方向键控制的动画
Dec 11 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连接Access数据库的方法小结
2013/06/20 PHP
详解PHP中instanceof关键字及instanceof关键字有什么作用
2015/11/05 PHP
JS 文件传参及处理技巧分析
2010/05/13 Javascript
javascript下高性能字符串连接StringBuffer类
2010/08/16 Javascript
JavaScript使用pop方法移除数组最后一个元素用法实例
2015/04/06 Javascript
JavaScript中toString()方法的使用详解
2015/06/05 Javascript
js倒计时抢购实例
2015/12/20 Javascript
JS判断字符串字节数并截取长度的方法
2016/03/05 Javascript
jQuery实现按钮点击遮罩加载及处理完后恢复的效果
2016/06/07 Javascript
需要牢记的JavaScript基础知识
2016/09/25 Javascript
nodejs中模块定义实例详解
2017/03/18 NodeJs
基于vue2的table分页组件实现方法
2017/03/20 Javascript
Vue.js的复用组件开发流程完整记录
2018/11/29 Javascript
在Python程序中实现分布式进程的教程
2015/04/28 Python
自动化Nginx服务器的反向代理的配置方法
2015/06/28 Python
tensorflow 获取模型所有参数总和数量的方法
2018/06/14 Python
python实现时间o(1)的最小栈的实例代码
2018/07/23 Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
2018/12/12 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
2019/07/06 Python
pytorch实现MNIST手写体识别
2020/02/14 Python
python实现低通滤波器代码
2020/02/26 Python
python下对hsv颜色空间进行量化操作
2020/06/04 Python
Python常用库Numpy进行矩阵运算详解
2020/07/21 Python
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
2013/06/03 HTML / CSS
CSS3网格的三个新特性详解
2014/04/04 HTML / CSS
深入理解HTML5定时器requestAnimationFrame的使用
2018/12/12 HTML / CSS
TripAdvisor台湾:全球最大旅游网站
2018/08/26 全球购物
毕业生的自我评价分享
2013/12/18 职场文书
调解协议书
2014/04/16 职场文书
公安民警正风肃纪剖析材料
2014/10/10 职场文书
先进党员事迹材料
2014/12/24 职场文书
党风廉正建设责任书
2015/01/29 职场文书
结婚通知短信怎么写
2015/04/17 职场文书
教研活动主持词
2015/07/03 职场文书
vue中data改变后让视图同步更新的方法
2021/03/29 Vue.js
nginx共享内存的机制详解
2022/03/21 Servers