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 相关文章推荐
ExtJS 2.0实用简明教程 之Ext类库简介
Apr 29 Javascript
JavaScript的继承的封装介绍
Oct 15 Javascript
JavaScript中的console.time()函数详细介绍
Dec 29 Javascript
jQuery遍历页面所有CheckBox查看是否被选中的方法
Apr 14 Javascript
JavaScript中的fontsize()方法使用详解
Jun 08 Javascript
jQuery 监控键盘一段时间没输入
Apr 22 Javascript
非常酷炫的Bootstrap图片轮播动画
May 27 Javascript
Bootstrap实现水平排列的表单
Jul 04 Javascript
jQuery简单自定义图片轮播插件及用法示例
Nov 21 Javascript
基于JavaScript实现焦点图轮播效果
Mar 27 Javascript
vue使用一些外部插件及样式的配置代码
Nov 18 Javascript
微信小程序实现打卡签到页面
Sep 21 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实现单链表的实例代码
2013/03/22 PHP
php 中奖概率算法实现代码
2017/01/25 PHP
php反射学习之依赖注入示例
2019/06/14 PHP
服务端 VBScript 与 JScript 几个相同特性的写法 By shawl.qiu
2007/03/06 Javascript
JQuery里面的几种选择器 查找满足条件的元素$(&quot;#控件ID&quot;)
2011/08/23 Javascript
JavaScript包装对象使用介绍
2013/08/29 Javascript
Js获取下拉框选定项的值和文本的实现代码
2014/02/26 Javascript
JS中实现简单Formatter函数示例代码
2014/08/19 Javascript
AngularJS 使用 UI Router 实现表单向导
2016/01/29 Javascript
React快速入门教程
2017/01/17 Javascript
JavaScript提高加载和执行效率的方法
2017/02/03 Javascript
微信小程序左滑删除效果的实现代码
2017/02/20 Javascript
Node.js中流(stream)的使用方法示例
2017/07/16 Javascript
详解Vue的钩子函数(路由导航守卫、keep-alive、生命周期钩子)
2018/07/24 Javascript
详解Webpack-dev-server的proxy用法
2018/09/08 Javascript
JQuery animate动画应用示例
2019/05/14 jQuery
前端天气插件tpwidget使用方法详解
2019/06/24 Javascript
electron实现静默打印的示例代码
2019/08/12 Javascript
详解Python实现多进程异步事件驱动引擎
2017/08/25 Python
Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例
2018/04/19 Python
PyQt5实现画布小程序
2020/05/30 Python
python新手学习可变和不可变对象
2020/06/11 Python
解析Tensorflow之MNIST的使用
2020/06/30 Python
python SOCKET编程基础入门
2021/02/27 Python
城市观光通行证:The Sightseeing Pass
2018/04/28 全球购物
《梅花魂》教学反思
2014/04/30 职场文书
2014年办公室个人工作总结
2014/11/12 职场文书
防卫过当辩护词
2015/05/21 职场文书
2015年档案室工作总结
2015/05/23 职场文书
舞出我人生观后感
2015/06/16 职场文书
运输公司工作总结
2015/08/11 职场文书
优秀毕业生主要事迹材料
2015/11/04 职场文书
外出听课学习心得体会
2016/01/15 职场文书
python执行js代码的方法
2021/05/13 Python
Vue中插槽slot的使用方法与应用场景详析
2021/06/08 Vue.js
mysql5.6主从搭建以及不同步问题详解
2021/12/04 MySQL