Blame view

WebRoot/static/js/jquery.tips.js 4.41 KB
ad5081d3   孙向锦   初始化项目
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
  /**
  * jquery tips 提示插件 jquery.tips.js v0.1beta
  *
  * 使用方法
  * $(selector).tips({   //selector 为jquery选择器
  *  msg:'your messages!',    //你的提示消息  必填
  *  side:1,  //提示窗显示位置  1,2,3,4 分别代表 上右下左 默认为1(上) 可选
  *  color:'#FFF', //提示文字色 默认为白色 可选
  *  bg:'#F00',//提示窗背景色 默认为红色 可选
  *  time:2,//自动关闭时间 默认2秒 设置0则不自动关闭 可选
  *  x:0,//横向偏移  正数向右偏移 负数向左偏移 默认为0 可选
  *  y:0,//纵向偏移  正数向下偏移 负数向上偏移 默认为0 可选
  * })
  *
  *
  */
  (function ($) {
      $.fn.tips = function(options){
          var defaults = {
              side:1,
              msg:'',
              color:'#FFF',
              bg:'#F00',
              time:2,
              x:0,
              y:0
          }
          var options = $.extend(defaults, options);
          if (!options.msg||isNaN(options.side)) {
          throw new Error('params error');
      }
      if(!$('#jquery_tips_style').length){
          var style='<style id="jquery_tips_style" type="text/css">';
          style+='.jq_tips_box{padding:10px;position:absolute;overflow:hidden;display:inline;display:none;z-index:10176523;}';
          style+='.jq_tips_arrow{display:block;width:0px;height:0px;position:absolute;}';
          style+='.jq_tips_top{border-left:10px solid transparent;left:20px;bottom:0px;}';
          style+='.jq_tips_left{border-top:10px solid transparent;right:0px;top:18px;}';
          style+='.jq_tips_bottom{border-left:10px solid transparent;left:20px;top:0px;}';
          style+='.jq_tips_right{border-top:10px solid transparent;left:0px;top:18px;}';
          style+='.jq_tips_info{word-wrap: break-word;word-break:normal;border-radius:4px;padding:5px 8px;max-width:130px;overflow:hidden;box-shadow:1px 1px 1px #999;font-size:12px;cursor:pointer;}';
          style+='</style>';
          $(document.body).append(style);
      }
          this.each(function(){
              var element=$(this);
              var element_top=element.offset().top,element_left=element.offset().left,element_height=element.outerHeight(),element_width=element.outerWidth();
              options.side=options.side<1?1:options.side>4?4:Math.round(options.side);
              var sideName=options.side==1?'top':options.side==2?'right':options.side==3?'bottom':options.side==4?'left':'top';
              var tips=$('<div class="jq_tips_box"><i class="jq_tips_arrow jq_tips_'+sideName+'"></i><div class="jq_tips_info">'+options.msg+'</div></div>').appendTo(document.body);
              tips.find('.jq_tips_arrow').css('border-'+sideName,'10px solid '+options.bg);
              tips.find('.jq_tips_info').css({
                  color:options.color,
                  backgroundColor:options.bg
              });
              switch(options.side){
                  case 1:
                      tips.css({
                          top:element_top-tips.outerHeight()+options.x,
                          left:element_left-10+options.y
                      });
                      break;
                  case 2:
                      tips.css({
                          top:element_top-20+options.x,
                          left:element_left+element_width+options.y
                      });
                      break;
                  case 3:
                      tips.css({
                          top:element_top+element_height+options.x,
                          left:element_left-10+options.y
                      });
                      break;
                  case 4:
                      tips.css({
                          top:element_top-20+options.x,
                          left:element_left-tips.outerWidth()+options.y
                      });
                      break;
                  default:
              }
              var closeTime;
              tips.fadeIn('fast').click(function(){
                  clearTimeout(closeTime);
                  tips.fadeOut('fast',function(){
                      tips.remove();
                  })
              })
              if(options.time){
                  closeTime=setTimeout(function(){
                      tips.click();
                  },options.time*1000);
                  tips.hover(function(){
                      clearTimeout(closeTime);
                  },function(){
                      closeTime=setTimeout(function(){
                          tips.click();
                      },options.time*1000);
                  })
              }
          });
          return this;
      };
  })(jQuery);