Hide native tooltip using jQuery

后端 未结 11 800
南旧
南旧 2020-12-01 05:00

Is there a way to hide the native tooltip action when a user hovers over a anchor tag with a title attribute? I don\'t want to remove it just don\'t display the nasty yellow

11条回答
  •  野趣味
    野趣味 (楼主)
    2020-12-01 05:34

    I used a variation on bEj ni c bEj's code, because I needed to preserve the title content on hover, but still needed to suppress the default behavior.

    // Suppress default tooltip behavior on hover
    var tempTitle = "";
    $('abbr[title],dfn[title],span.info-tip[title],').hover(
    function(e){
        e.preventDefault();
        tempTitle = $(this).attr('title');
    
        $(this).attr('title', '');
            // add attribute 'tipTitle' & populate on hover
            $(this).hover(
                function(){
                    $(this).attr('tipTitle', tempTitle);
                }
            );
        },
       // restore title on mouseout
       function() {
       $(this).attr('title', tempTitle);
       }
    );
    

    This allows me to do this in my stylesheet: /* abbr & tooltip styles: first, the immediate descendants of the content area are set to highlight abbreviations on hover, but avoiding lists; as we don't want *all* abbreviations highlighted when you hover on a root list */

    abbr,
    abbr[tipTitle],
    dfn,
    dfn[tipTitle],
    span.info-tip,
    span.info-tip[tipTitle] {
    border-bottom:none; /*remove border 1st, then let following rules add it back in*/
    }
    
    p:hover abbr[tipTitle],
    li:hover abbr[tipTitle],
    dl>*:hover abbr[tipTitle],
    label:hover abbr[tipTitle],
    p:hover dfn[tipTitle],
    li:hover dfn[tipTitle],
    dl>*:hover dfn[tipTitle],
    label:hover dfn[tipTitle],
    p:hover span.info-tip[tipTitle],
    li:hover span.info-tip[tipTitle],
    dl>*:hover span.info-tip[tipTitle],
    label:hover span.info-tip[tipTitle]
    {
    position: relative;
    text-decoration: none;
    border-bottom: 1px dotted #333;
    cursor: help;
    }
    
    p:hover abbr[tipTitle]:before,
    li:hover abbr[tipTitle]:before,
    dl>*:hover abbr[tipTitle]:before,
    label:hover abbr[tipTitle]:before,
    p:hover dfn[tipTitle]:before,
    li:hover dfn[tipTitle]:before,
    dl>*:hover dfn[tipTitle]:before,
    label:hover dfn[tipTitle]:before,
    p:hover span.info-tip[tipTitle]:before,
    li:hover span.info-tip[tipTitle]:before,
    dl>*:hover span.info-tip[tipTitle]:before,
    label:hover span.info-tip[tipTitle]:before {
    content: "";
    position: absolute;
    border-top: 20px solid #803808;
    border-left: 30px solid transparent;
    border-right: 30px solid transparent;
    visibility: hidden;
    top: -18px;
    left: -26px;
    }
    
    p:hover abbr[tipTitle]:after,
    li:hover abbr[tipTitle]:after,
    dl>*:hover abbr[tipTitle]:after,
    label:hover abbr[tipTitle]:after,
    p:hover dfn[tipTitle]:after,
    li:hover dfn[tipTitle]:after,
    dl>*:hover dfn[tipTitle]:after,
    label:hover dfn[tipTitle]:after,
    p:hover span.info-tip[tipTitle]:after,
    li:hover span.info-tip[tipTitle]:after,
    dl>*:hover span.info-tip[tipTitle]:after,
    label:hover span.info-tip[tipTitle]:after {
    content: attr(tipTitle);
    position: absolute;
    color: white;
    top: -35px;
    left: -26px;
    background: #803808;
    padding: 5px 15px;
    -webkit-border-radius: 10px;
    -moz-border-radius: 10px;
    border-radius: 10px;
    white-space: nowrap;
    visibility: hidden;
    }
    
    p:hover abbr[tipTitle]:hover:before,
    li:hover abbr[tipTitle]:hover:before,
    dl>*:hover abbr[tipTitle]:hover:before,
    label:hover abbr[tipTitle]:hover:before,
    p:hover dfn[tipTitle]:hover:before,
    li:hover dfn[tipTitle]:hover:before,
    dl>*:hover dfn[tipTitle]:hover:before,
    label:hover dfn[tipTitle]:hover:before,
    p:hover span.info-tip[tipTitle]:hover:before,
    li:hover span.info-tip[tipTitle]:hover:before,
    dl>*:hover span.info-tip[tipTitle]:hover:before,
    label:hover span.info-tip[tipTitle]:hover:before,
    p:hover abbr[tipTitle]:hover:after,
    li:hover abbr[tipTitle]:hover:after,
    dl>*:hover abbr[tipTitle]:hover:after,
    label:hover abbr[tipTitle]:hover:after,
    p:hover dfn[tipTitle]:hover:after,
    li:hover dfn[tipTitle]:hover:after,
    dl>*:hover dfn[tipTitle]:hover:after,
    label:hover dfn[tipTitle]:hover:after,
    p:hover span.info-tip[tipTitle]:hover:after,
    li:hover span.info-tip[tipTitle]:hover:after,
    dl>*:hover span.info-tip[tipTitle]:hover:after,
    label:hover span.info-tip[tipTitle]:hover:after {
    visibility: visible;
    transition: visibility 0s linear .3s;
    -moz-transition: visibility 0s linear .3s;
    }
    

    Giving me pretty tooltips where I need them, without the default tooltip appearing simultaneously.

提交回复
热议问题