制作jquery文字提示插件

发布者: seasun

很多朋友向明河请教如何写jquery插件,今天在浏览tutorialzine时 候有篇教程讲解如何写个jquery文字提示插件,这插件很简单,很适合用于讲解jquery插件机制,明河也借此抛砖引玉先讲解具体一个插件,这个插件 名为:Colortip,然后在下篇教程讲解jquery插件机制。

效果如下图,鼠标滑过链接出现文字提示,提示框的背景颜色可以自由控制。

制作教程

一、功能讲解

  • 1、鼠标经过带有”title”属性的容器,出现title中的内容(一般是链接、图片)
  • 2、可以控制提示框的背景颜色

二、创建html结构

最重要的是title属性,此属性用于控制提示框出现的内容。
class=”blue”用于控制提示框的背景颜色。
当你第一次滑过该容器时,会创建如下提示框容器:

  1. <a class=”blue colorTipContainer” href=”http://www.iwanna.cn/archives/2010/07/17/4583/”>推荐9个jquery手风琴菜单插件
  2. <span class=”colorTip” style=”margin-left: -60px;”>推荐9个jquery手风 琴菜单插件
  3. <span class=”pointyTipShadow”></span>
  4. <span class=”pointyTip”></span>
  5. </span>
  6. </a>

css部分的内容不是讲解关键,明河予以略过。

三、插件代码colortip-1.0-.js

  1. (function($){
  2. $.fn.colorTip = function(settings){
  3. var defaultSettings = {
  4. //颜色
  5. color : ‘yellow’,
  6. //延迟
  7. timeout : 500
  8. }
  9. //提示框的颜色
  10. var supportedColors = ['red','green','blue','white','yellow','black'];
  11. /* 合并默认参数和用户自定义参数 */
  12. settings = $.extend(defaultSettings,settings);
  13. return this.each(function(){
  14. var elem = $(this);
  15. // 如果该对象不包含title属性,直接予以返回
  16. if(!elem.attr(‘title’)) return true;
  17. // 实例化eventScheduler(定时器)
  18. var scheduleEvent = new eventScheduler();
  19. //实例化Tip(提示类,产生、显示、隐藏)
  20. var tip = new Tip(elem.attr(‘title’));
  21. // 产生提示框,并给提示框父容器添加样式
  22. elem.append(tip.generate()).addClass(‘colorTipContainer’);
  23. // 检查提示框父容器是否有颜色样式
  24. var hasClass = false;
  25. for(var i=0;i<supportedColors.length;i++)
  26. {
  27. if(elem.hasClass(supportedColors[i])){
  28. hasClass = true;
  29. break;
  30. }
  31. }
  32. // 如果没有,使用默认的颜色
  33. if(!hasClass){
  34. elem.addClass(settings.color);
  35. }
  36. // 鼠标滑过提示框父容器时,显示提示框
  37. // 鼠标移出,则隐藏
  38. elem.hover(function(){
  39. tip.show();
  40. //清理定时器
  41. scheduleEvent.clear();
  42. },function(){
  43. //启动定时器
  44. scheduleEvent.set(function(){
  45. tip.hide();
  46. },settings.timeout);
  47. });
  48. //删除title属性
  49. elem.removeAttr(‘title’);
  50. });
  51. }
  52. /*
  53. / 定时器类
  54. */
  55. function eventScheduler(){}
  56. eventScheduler.prototype = {
  57. set : function (func,timeout){
  58. //添加定时器
  59. this.timer = setTimeout(func,timeout);
  60. },
  61. clear: function(){
  62. //清理定时器
  63. clearTimeout(this.timer);
  64. }
  65. }
  66. /*
  67. / 提示类
  68. */
  69. function Tip(txt){
  70. this.content = txt;
  71. this.shown = false;
  72. }
  73. Tip.prototype = {
  74. generate: function(){
  75. //产生提示框
  76. return this.tip || (this.tip = $(‘<span >’+this.content+
  77. ‘<span class=”pointyTipShadow”></span><span class=”pointyTip”></span></span>’));
  78. },
  79. show: function(){
  80. //显示提示框
  81. if(this.shown) return;
  82. this.tip.css(‘margin-left’,-this.tip.outerWidth()/2).fadeIn(‘fast’);
  83. this.shown = true;
  84. },
  85. hide: function(){
  86. //隐藏提示框
  87. this.tip.fadeOut();
  88. this.shown = false;
  89. }
  90. }
  91. })(jQuery);

关键代码注释明河已经翻译了,插件的制作思路,明河将在接下来的教程详解。

四、jquery插件模板

jquery插件是有固定的模板的,你大概大部分的jquery插件源码,会发现都有一套固定模板。
模板如下:

  1. (function($){
  2. $.fn.插件名= function(settings){
  3. //默认参数
  4. var defaultSettings = {
  5. }
  6. /* 合并默认参数和用户自定义参数 */
  7. settings = $.extend(defaultSettings,settings);
  8. return this.each(function(){
  9. });
  10. }
  11. })(jQuery);

转载请标注编辑来源:制作jquery文字提示插件

英文原文来源  查看中文来源   我想网 板凳 编辑

Tags: ,

分享
QQ书签
百度搜藏
Del.icio.us
Google书签
和讯网摘
天极网摘

回复已关闭.