2015-05-16 204 views
0

我有一个元素,我试图展示悬停并保持显示。然后隐藏何时点击或先前悬停的按钮被点击。我有代码工作,但它切换悬停效果,如果按钮被点击。jquery显示悬停隐藏点击

按钮悬停=示出和

格示出的div任何地方以外点击= DIV隐藏

所示

的div和按钮点击= DIV隐藏悬停和示出鼠标移动关按钮

我后当鼠标点击时隐藏div隐藏,鼠标不再徘徊时隐藏。鼠标离开按钮后不会重新出现。

<script type="text/javascript"> 
     $(document).ready(function() { 
      $('.email-div').hide(); 
       $('.showemail').hover(function() { 
        var takeClass = $(this).attr('class'); 
         $('.email-div').show(); 
       }); 
     }); 
     $(document).on("click", function() { 
       $(".email-div").hide(); 
     }); 
</script> 

<a class="showemail"> 
    Button 
</a> 

<div class="email-div"> 
    <p>Subscribe your email</p> 
</div> 

回答

4

试试这个: -

$(document).ready(function() { 
    $('.email-div').hide(); 
    $('.showemail').hover(function() { 
       if(!$(this).hasClass('hoverd')) 
       { 
        $(this).addClass('hoverd') 
        $('.email-div').show(); 
       } 
    },function(){ 
    $(this).removeClass('hoverd') 
    }); 
}); 
$(document).on("click", function() { 
    $(".email-div").hide(); 
    }); 

Demo

+0

你是个天才!谢谢! – Heather

+0

@ Heather高兴地帮助你:) –

2

尝试使用代替悬停

的jsfiddle的mouseenter:https://jsfiddle.net/toLt4tfg/1/

$(document).ready(function() { 
     $('.email-div').hide(); 
      $('.showemail').mouseenter(function() { 

        $('.email-div').show(); 
      }); 
    }); 
    $(document).on("click", function() { 
      $(".email-div").hide(); 
    }); 
+0

这个工程,但当你点击进入div它消失。有什么建议么? – Heather

+0

向email-div添加单击事件处理程序以停止事件传播 - https://jsfiddle.net/toLt4tfg/2/ –