在鼠标悬停时显示/隐藏DIV

时间:2012-06-25 05:41:27

标签: javascript jquery

我想在图像/链接悬停上显示DIV,我已编写以下代码

   $("#NotificationSummary").hover(
      function () {
          $("#dvNotifications").slideDown();
      },
      function () {           

          $("#dvNotifications").slideUp();
      }
    );

DIV在悬停时显示但是当我移动到它隐藏的div时,如何在鼠标悬停时阻止div隐藏

请查看演示http://jsfiddle.net/3hqrW/15/

3 个答案:

答案 0 :(得分:3)

[ reedit 基于评论] jsfiddle修订,删除了css-only解决方案。诀窍是监视滑动元素的悬停状态并使用超时允许用户在滑动元素上移动(另请参阅更新的jsfiddle中的注释)。

jsfiddle派生自OPs jsfiddle @here

使用#ids的悬停功能:

function hover(e){
 e = e || event;
 var el = e.target || e.srcElement
    ,showel = $('#dvNotifications')
 ;
 if (!/NotificationSummary/i.test(el.id)) {
  showel .attr('data-ishovered',/over/i.test(e.type));
 } else {
  showel .attr('data-ishovered',false)
 }

 if (/true/i.test(showel .attr('data-ishovered'))){return true;}

 if (/over$/i.test(e.type) && /NotificationSummary/i.test(el.id)){
    showel .slideDown();
 } else {
    setTimeout(function(){
        if (/false/i.test(showel .attr('data-ishovered'))) {
            showel .slideUp();
            showel .attr('data-ishovered',false);
        }
      }
    ,200);
 }

}

答案 1 :(得分:1)

Tanveer请注意演示: http://jsfiddle.net/rathoreahsan/3hqrW/

您想要在悬停时显示的div应位于您要悬停的主div内,而主div应具有css属性:display:block

另一个演示: http://jsfiddle.net/rathoreahsan/SGUbC/

答案 2 :(得分:-1)

  $("#NotificationSummary").mouseenter(function() {
       $("#dvNotifications").fadeIn();
  }).mouseleave(function() {
      $("#dvNotifications").fadeOut();
  });