Jquery hover鼠标经过时弹出div动态提示语

一、效果图

 

二、需求描述

  1、鼠标经过table每一行时,弹出div动态提示语;

  2、div弹出层的位置随鼠标位置的变化而变化;

  3、鼠标离开table或获取的动态提示语为空时,div弹出层消失。

  下面我做了一个简单的实现,第一次在博客园写随笔记录下来。

三、实现思路

  1、设计一个div弹出层的样式。该div在页面只有一个,哪里需要就往哪里搬。

  2、获取并保存鼠标的位置,定位div弹出层的位置。

  3、获取table每行隐藏的提示语,设置到div中区显示。

  4、使用鼠标经过和离开事件,对div进行控制。

四、具体实现步骤

  1、定义div的HTML代码如下:

  <div class="hoverdiv">
    <div style="text-align: center; vertical-align: middle;"><label id="message" style="color: #000000;"></label></div>
  </div>

  //保存鼠标的位置

  <input type="hidden" id="pagex" />

  <input type="hidden" id="pagey" />

  2、div样式 

  <style type="text/css">
    .blockdiv{
      width:285px;
      height:30px;
      display:none;
      left: 977px;
      top: 300px;
      position: absolute;
      z-index:1002;
      opacity:1;
      background:#D6D6D6;
    }
  </style>

  3、需要鼠标经过table每一行,弹出div,table设计如下:

  <table>
    <thead>
      <tr>
        <th class="center">name</th>
        <th>pass</th>
      </tr>
    </thead>
    <tbody>
    #foreach(${item} in ${draftPage.result})
      <tr class="hoverTag">
        <td>
          <label>
            <input type="hidden" name="message" value="$!dateTool.format("yyyy-MM-dd HH:mm:ss", $!{item.tagTime})">

          </label>
        </td>
        <td>$!{item.name}</td>
        <td>$!{item.pass}</td>
      </tr>
    #end
    </tbody
  </table>

  4、鼠标经过和离开事件处理如下:

  <script>
    //获取鼠标的位置,并保存到页面隐藏域中
    $(document).mousemove(function (e) {
      document.getElementById("pagex").value = e.pageX;//pageX() 属性是鼠标指针的位置,相对于文档的左边缘。
      document.getElementById("pagey").value = e.pageY;//pageY() 属性是鼠标指针的位置,相对于文档的上边缘。
    });

    var MouseEvent = function(e){
      this.x = e.pageX;
      this.y = e.pageY;
    }

    var Mouse = function(e){
      var kdheight = jQuery(document).scrollTop();
      mouse = new MouseEvent(e);
      leftpx = mouse.x+15;
      toppx = mouse.y-10;
    }

    $(".hoverTag").hover(
      function (e) {//鼠标经过时业务处理

        Mouse(e);
        var message = e.currentTarget.firstElementChild.firstElementChild.lastElementChild.defaultValue;
        if(message == null || message == '' || message == undefined){
          $(".hoverdiv").css({
            "display": "none",
          });
          $("#message").html("");
        }else{
          $(".hoverdiv").css({
            "display": "block",
            "left": leftpx,
            "top": toppx,
          });
          $("#message").html(message);
        }
      },
      function () {//鼠标离开时业务处理
        $(".hoverdiv").css({
          "display": "none",
        });
        $("#message").html("");
      }
    )
  </script>

 

posted @ 2016-03-31 13:52  幸运星~  阅读(14331)  评论(1编辑  收藏  举报