jquery.tooltip.js 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. /**
  2. * jQuery EasyUI 1.4.4
  3. *
  4. * Copyright (c) 2009-2015 www.jeasyui.com. All rights reserved.
  5. *
  6. * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php
  7. * To use it on other terms please contact us: info@jeasyui.com
  8. *
  9. */
  10. (function($){
  11. function _1(_2){
  12. $(_2).addClass("tooltip-f");
  13. };
  14. function _3(_4){
  15. var _5=$.data(_4,"tooltip").options;
  16. $(_4).unbind(".tooltip").bind(_5.showEvent+".tooltip",function(e){
  17. $(_4).tooltip("show",e);
  18. }).bind(_5.hideEvent+".tooltip",function(e){
  19. $(_4).tooltip("hide",e);
  20. }).bind("mousemove.tooltip",function(e){
  21. if(_5.trackMouse){
  22. _5.trackMouseX=e.pageX;
  23. _5.trackMouseY=e.pageY;
  24. $(_4).tooltip("reposition");
  25. }
  26. });
  27. };
  28. function _6(_7){
  29. var _8=$.data(_7,"tooltip");
  30. if(_8.showTimer){
  31. clearTimeout(_8.showTimer);
  32. _8.showTimer=null;
  33. }
  34. if(_8.hideTimer){
  35. clearTimeout(_8.hideTimer);
  36. _8.hideTimer=null;
  37. }
  38. };
  39. function _9(_a){
  40. var _b=$.data(_a,"tooltip");
  41. if(!_b||!_b.tip){
  42. return;
  43. }
  44. var _c=_b.options;
  45. var _d=_b.tip;
  46. var _e={left:-100000,top:-100000};
  47. if($(_a).is(":visible")){
  48. _e=_f(_c.position);
  49. if(_c.position=="top"&&_e.top<0){
  50. _e=_f("bottom");
  51. }else{
  52. if((_c.position=="bottom")&&(_e.top+_d._outerHeight()>$(window)._outerHeight()+$(document).scrollTop())){
  53. _e=_f("top");
  54. }
  55. }
  56. if(_e.left<0){
  57. if(_c.position=="left"){
  58. _e=_f("right");
  59. }else{
  60. $(_a).tooltip("arrow").css("left",_d._outerWidth()/2+_e.left);
  61. _e.left=0;
  62. }
  63. }else{
  64. if(_e.left+_d._outerWidth()>$(window)._outerWidth()+$(document)._scrollLeft()){
  65. if(_c.position=="right"){
  66. _e=_f("left");
  67. }else{
  68. var _10=_e.left;
  69. _e.left=$(window)._outerWidth()+$(document)._scrollLeft()-_d._outerWidth();
  70. $(_a).tooltip("arrow").css("left",_d._outerWidth()/2-(_e.left-_10));
  71. }
  72. }
  73. }
  74. }
  75. _d.css({left:_e.left,top:_e.top,zIndex:(_c.zIndex!=undefined?_c.zIndex:($.fn.window?$.fn.window.defaults.zIndex++:""))});
  76. _c.onPosition.call(_a,_e.left,_e.top);
  77. function _f(_11){
  78. _c.position=_11||"bottom";
  79. _d.removeClass("tooltip-top tooltip-bottom tooltip-left tooltip-right").addClass("tooltip-"+_c.position);
  80. var _12,top;
  81. if(_c.trackMouse){
  82. t=$();
  83. _12=_c.trackMouseX+_c.deltaX;
  84. top=_c.trackMouseY+_c.deltaY;
  85. }else{
  86. var t=$(_a);
  87. _12=t.offset().left+_c.deltaX;
  88. top=t.offset().top+_c.deltaY;
  89. }
  90. switch(_c.position){
  91. case "right":
  92. _12+=t._outerWidth()+12+(_c.trackMouse?12:0);
  93. top-=(_d._outerHeight()-t._outerHeight())/2;
  94. break;
  95. case "left":
  96. _12-=_d._outerWidth()+12+(_c.trackMouse?12:0);
  97. top-=(_d._outerHeight()-t._outerHeight())/2;
  98. break;
  99. case "top":
  100. _12-=(_d._outerWidth()-t._outerWidth())/2;
  101. top-=_d._outerHeight()+12+(_c.trackMouse?12:0);
  102. break;
  103. case "bottom":
  104. _12-=(_d._outerWidth()-t._outerWidth())/2;
  105. top+=t._outerHeight()+12+(_c.trackMouse?12:0);
  106. break;
  107. }
  108. return {left:_12,top:top};
  109. };
  110. };
  111. function _13(_14,e){
  112. var _15=$.data(_14,"tooltip");
  113. var _16=_15.options;
  114. var tip=_15.tip;
  115. if(!tip){
  116. tip=$("<div tabindex=\"-1\" class=\"tooltip\">"+"<div class=\"tooltip-content\"></div>"+"<div class=\"tooltip-arrow-outer\"></div>"+"<div class=\"tooltip-arrow\"></div>"+"</div>").appendTo("body");
  117. _15.tip=tip;
  118. _17(_14);
  119. }
  120. _6(_14);
  121. _15.showTimer=setTimeout(function(){
  122. $(_14).tooltip("reposition");
  123. tip.show();
  124. _16.onShow.call(_14,e);
  125. var _18=tip.children(".tooltip-arrow-outer");
  126. var _19=tip.children(".tooltip-arrow");
  127. var bc="border-"+_16.position+"-color";
  128. _18.add(_19).css({borderTopColor:"",borderBottomColor:"",borderLeftColor:"",borderRightColor:""});
  129. _18.css(bc,tip.css(bc));
  130. _19.css(bc,tip.css("backgroundColor"));
  131. },_16.showDelay);
  132. };
  133. function _1a(_1b,e){
  134. var _1c=$.data(_1b,"tooltip");
  135. if(_1c&&_1c.tip){
  136. _6(_1b);
  137. _1c.hideTimer=setTimeout(function(){
  138. _1c.tip.hide();
  139. _1c.options.onHide.call(_1b,e);
  140. },_1c.options.hideDelay);
  141. }
  142. };
  143. function _17(_1d,_1e){
  144. var _1f=$.data(_1d,"tooltip");
  145. var _20=_1f.options;
  146. if(_1e){
  147. _20.content=_1e;
  148. }
  149. if(!_1f.tip){
  150. return;
  151. }
  152. var cc=typeof _20.content=="function"?_20.content.call(_1d):_20.content;
  153. _1f.tip.children(".tooltip-content").html(cc);
  154. _20.onUpdate.call(_1d,cc);
  155. };
  156. function _21(_22){
  157. var _23=$.data(_22,"tooltip");
  158. if(_23){
  159. _6(_22);
  160. var _24=_23.options;
  161. if(_23.tip){
  162. _23.tip.remove();
  163. }
  164. if(_24._title){
  165. $(_22).attr("title",_24._title);
  166. }
  167. $.removeData(_22,"tooltip");
  168. $(_22).unbind(".tooltip").removeClass("tooltip-f");
  169. _24.onDestroy.call(_22);
  170. }
  171. };
  172. $.fn.tooltip=function(_25,_26){
  173. if(typeof _25=="string"){
  174. return $.fn.tooltip.methods[_25](this,_26);
  175. }
  176. _25=_25||{};
  177. return this.each(function(){
  178. var _27=$.data(this,"tooltip");
  179. if(_27){
  180. $.extend(_27.options,_25);
  181. }else{
  182. $.data(this,"tooltip",{options:$.extend({},$.fn.tooltip.defaults,$.fn.tooltip.parseOptions(this),_25)});
  183. _1(this);
  184. }
  185. _3(this);
  186. _17(this);
  187. });
  188. };
  189. $.fn.tooltip.methods={options:function(jq){
  190. return $.data(jq[0],"tooltip").options;
  191. },tip:function(jq){
  192. return $.data(jq[0],"tooltip").tip;
  193. },arrow:function(jq){
  194. return jq.tooltip("tip").children(".tooltip-arrow-outer,.tooltip-arrow");
  195. },show:function(jq,e){
  196. return jq.each(function(){
  197. _13(this,e);
  198. });
  199. },hide:function(jq,e){
  200. return jq.each(function(){
  201. _1a(this,e);
  202. });
  203. },update:function(jq,_28){
  204. return jq.each(function(){
  205. _17(this,_28);
  206. });
  207. },reposition:function(jq){
  208. return jq.each(function(){
  209. _9(this);
  210. });
  211. },destroy:function(jq){
  212. return jq.each(function(){
  213. _21(this);
  214. });
  215. }};
  216. $.fn.tooltip.parseOptions=function(_29){
  217. var t=$(_29);
  218. var _2a=$.extend({},$.parser.parseOptions(_29,["position","showEvent","hideEvent","content",{trackMouse:"boolean",deltaX:"number",deltaY:"number",showDelay:"number",hideDelay:"number"}]),{_title:t.attr("title")});
  219. t.attr("title","");
  220. if(!_2a.content){
  221. _2a.content=_2a._title;
  222. }
  223. return _2a;
  224. };
  225. $.fn.tooltip.defaults={position:"bottom",content:null,trackMouse:false,deltaX:0,deltaY:0,showEvent:"mouseenter",hideEvent:"mouseleave",showDelay:200,hideDelay:100,onShow:function(e){
  226. },onHide:function(e){
  227. },onUpdate:function(_2b){
  228. },onPosition:function(_2c,top){
  229. },onDestroy:function(){
  230. }};
  231. })(jQuery);