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 相关文章推荐
Jquery拖拽并简单保存的实现代码
Nov 28 Javascript
在Javascript里访问SharePoint列表数据的实现方法
May 22 Javascript
邮箱下拉自动填充选择示例代码附图
Apr 03 Javascript
JavaScript中Function函数与Object对象的关系
Dec 17 Javascript
浅谈js内置对象Math的属性和方法(推荐)
Sep 19 Javascript
浅谈jquery采用attr修改form表单enctype不起作用的问题
Nov 25 Javascript
jQuery 如何实现一个滑动按钮开关
Dec 01 Javascript
JS新包管理工具yarn和npm的对比与使用入门
Dec 09 Javascript
centos 上快速搭建ghost博客方法分享
May 23 Javascript
jQuery基于Ajax实现读取XML数据功能示例
May 31 jQuery
JS开发常用工具函数(小结)
Jul 04 Javascript
原生JS封装vue Tab切换效果
Apr 28 Vue.js
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
Zend的MVC机制使用分析(一)
2013/05/02 PHP
基于php 随机数的深入理解
2013/06/05 PHP
PHP 错误处理机制
2015/07/06 PHP
PHP基于DOM创建xml文档的方法示例
2017/02/08 PHP
Laravel框架模板继承操作示例
2018/06/11 PHP
PHP时间戳和日期相互转换操作实例小结
2018/12/18 PHP
CSS+JS构建的图片查看器
2006/07/22 Javascript
奇妙的js
2007/09/24 Javascript
jquery easyui的tabs使用时的问题
2010/03/23 Javascript
javascript错误的认识不用关心内存管理
2012/12/15 Javascript
JS特殊函数(Function()构造函数、函数直接量)区别介绍
2013/05/19 Javascript
javascript获得网页窗口实际大小的示例代码
2013/09/21 Javascript
jquery将一个表单序列化为一个对象的方法
2013/12/02 Javascript
jQuery中replaceAll()方法用法实例
2015/01/16 Javascript
js控制文本框输入的字符类型方法汇总
2015/06/19 Javascript
Bootstrap每天必学之导航
2015/11/26 Javascript
EasyUI修改DateBox和DateTimeBox的默认日期格式示例
2017/01/18 Javascript
将angular.js项目整合到.net mvc中的方法详解
2017/06/29 Javascript
使用react-router4.0实现重定向和404功能的方法
2017/08/28 Javascript
详细分析jsonp的原理和实现方式
2017/11/20 Javascript
js登录滑动验证的实现(不滑动无法登陆)
2018/01/03 Javascript
JavaScript面试出现频繁的一些易错点整理
2018/03/29 Javascript
微信小程序自定义组件传值 页面和组件相互传数据操作示例
2019/05/05 Javascript
python定时利用QQ邮件发送天气预报的实例
2017/11/17 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
2018/06/14 Python
Python基于xlrd模块操作Excel的方法示例
2018/06/21 Python
使用python实现快速搭建简易的FTP服务器
2018/09/12 Python
python远程邮件控制电脑升级版
2019/05/23 Python
英国儿童家具专卖店:GLTC
2016/09/24 全球购物
全球最大的房车租赁市场:Outdoorsy
2018/09/19 全球购物
日本最大的购物网站:日本乐天市场(Rakuten Ichiba)
2020/11/04 全球购物
澳大利亚领先的时尚内衣零售商:Bras N Things
2020/07/28 全球购物
main 主函数执行完毕后,是否可能会再执行一段代码,给出说明
2012/12/05 面试题
私人委托书格式
2014/09/10 职场文书
2016年保险公众宣传日活动总结
2016/04/05 职场文书
vscode中使用npm安装babel的方法
2021/08/02 Javascript