【问题标题】:Show popup if the mouse is hovered over an element for a period of time如果鼠标悬停在元素上一段时间,则显示弹出窗口
【发布时间】:2021-10-04 19:29:58
【问题描述】:

我想知道当鼠标悬停在元素上一段时间时如何显示弹出/提示框,例如伪代码:

if mouseover
    if hovered for more than 2 seconds
       --> show popup/tipbox
    else
       ---> cancel mouseover
else if mouseout
    --> reset timer/cancel mouseover

到目前为止,我已经这样做了,但效果不佳,如果我将鼠标悬停并快速移动,它仍然会显示弹出框/提示框。

$('a[rel=tip]').live('mouseover mouseout', function(e)
{
    if(e.type == 'mouseover')
    {
        var mouseTime = setTimeout(function()
        {
            $('.tipbox').slideDown('fast');
        }, 1000);
    }
    else if(e.type == 'mouseout')
    {
        if(mouseTime)
        {
            cancelTimeout(mouseTime);
            mouseTime = null;
            $('.tipbox').slideUp('fast');   
        }
    }
});

编辑:已添加赏金。

【问题讨论】:

    标签: jquery mouseevent mouseover


    【解决方案1】:

    This 似乎对我有用:

    HTML

    <span id="someElem"> Hover me for 2 seconds! </span>
    

    JS

    var tooltipTimeout;
        
    $("#someelem").hover(function()
    {
        tooltipTimeout = setTimeout(showTooltip, 2000);
    }, hideTooltip);
        
    function showTooltip()
    {
        var tooltip = $("<div id='tooltip' class='tooltip'>I'm the tooltip!</div>");
        tooltip.appendTo($("#someelem"));
    }
        
    function hideTooltip()
    {
        clearTimeout(tooltipTimeout);
        $("#tooltip").fadeOut().remove();
    }
    

    CSS

    #someElem
    {
        cursor: pointer;
    }
        
    .tooltip
    {
        display: block;
        position: absolute;
        background-color: rgb(130, 150, 200);
        padding: 5px;
    }
    

    【讨论】:

      【解决方案2】:

      试试这个:

      function show_tipbox (thelink,tipbox) { 
          var timer; 
          timer = setTimeout(function(){
              $(tipbox).stop(true, true).fadeIn('normal');
          }, 300); 
          $(thelink).mouseout(function(){ clearTimeout(timer); });
      }
      
      function hide_tipbox (tipbox) {
          $(tipbox).stop(true, true).fadeOut('normal');
      }
      

      html代码应该是:

      <a href="#" id="thelink" onmouseover="show_tipbox('#thelink','#tipbox');">The link</a>
      <div id="tipbox" onmouseout="hide_tipbox('#tipbox');">Tipbox Content</div>
      

      【讨论】:

        【解决方案3】:

        你可以试试This plugin——它是由一本非常好的jQuery书的作者写的,所以应该不错。演示看起来很有希望。

        【讨论】:

          猜你喜欢
          • 2023-03-17
          • 1970-01-01
          • 2011-06-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多