【问题标题】:How to hide browser tooltip for links如何隐藏链接的浏览器工具提示
【发布时间】:2011-05-06 00:21:46
【问题描述】:

大家好,我尝试使用 jQuery 制作我自己的工具提示脚本,该脚本跟随我的鼠标。一切都很好,但是当我将鼠标悬停在链接上并等待几秒钟时,浏览器使用标题作为自己的工具提示。我怎样才能阻止这一切?!

我在不删除标题标签的情况下寻找解决方案。

我的代码:

<html>
<head>
    <title>Tooltip</title>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
            $("a").mousemove("mouseover", function(e) {
                var x = e.clientX;
                var y = e.clientY-30;               
                var text = $(this).attr("title");
                var i = 0;
                for(i=0;i<1;i++) {
                    if(i=0) {
                        $("body").append('<div class="tooltip" style="margin-top:'+y+'px; margin-left: '+x+'px;">'+text+'</div>');
                    } else { 
                        $("div.tooltip").remove(); 
                        $("body").append('<div class="tooltip" style="margin-top:'+y+'px; margin-left: '+x+'px;">'+text+'</div>');
                    }
                }
            });
            $("a").mouseout(function() {
                $("div.tooltip").remove();
            });
        });
    </script>
    <style>
        body {
            top: 0px;
            left: 0px;
            margin: 0;
            padding: 0;
        }
        a {
            text-decoration: none;
        }
        div.tooltip {
            background-color: #123534;
            position: fixed;
            z-index: 2;
            padding: 5px;
            heigth: 30px;
        }
        div.menu {

            background-color: #666666;
            margin-left: 100px;
            margin-top: 100px;
            position: fixed;
            width: auto;
            z-index: 1;
        }
        ul {
            margin: 0;
            padding: 5px;
            list-style-type: none;
        }
        li {
            display: inline;
        }
    </style>
</head>
<body>
    <div class="menu">
        <ul>
            <li>
                <a href="#" title="test" >Link</a>
            </li>
            <li>
                <a href="#" title="asd" >Link</a>
            </li>
            <li>
                <a href="#" title="123" >Link</a>
            </li>
        </ul>

    </div>
</body>
</html>

如果有人知道如何优化我的脚本,我将不胜感激;]

【问题讨论】:

标签: jquery browser tooltip hide


【解决方案1】:

这很简单。您只需要将工具提示数据放在另一个属性中。我使用 html5 规范并执行“数据工具提示”。

HTML:

<a href="#" data-tooltip="my link tooltip content">My Link</a>

JS:

var text = $(this).data("tooltip");


-- 或--


如果由于某种原因您无法编辑标记,则可以通过编程方式进行。您必须在将鼠标悬停在 document.ready 上之前执行此操作,例如:

$(document).ready(function() {

    $("a").each(function() { 

        var $this = $(this);

        $this
            .data("tooltip", $this.attr("title"))
            .removeAttr("title");

    });

});

然后,在你的鼠标移动中,正如我上面提到的,你会用:

var text = $(this).data("tooltip");

【讨论】:

  • 是的,现在我的脚本删除了“title”属性并为鼠标悬停事件创建了自己的属性。在 mouseout 上,我的属性将被“title”属性删除。感谢您的帖子,您将赢得正确答案的勾选,因为我使用相同的方法 :) 干杯 :)
  • 太棒了。只是在找这个。 data-tooltip="我的链接工具提示内容"
【解决方案2】:

在您的mouseover 事件中,您可以.attr('title', '') 删除标题..

然后在您的mouseout 事件中,您可以.attr('title', text),因为您之前保存了标题。

【讨论】:

  • 在我的帖子“我在不删除标题标签的情况下寻找解决方案。”
  • @T0m3kk:我认为这不可能。
【解决方案3】:
$("a.the_link").hover(
function () {
 $(this).data('title', $(this).attr('title'));
    $(this).removeAttr('title');
},
function () {
    $(this).attr('title', $(this).data('title'));
});

这是我看到的一个想法,我没有想过这个,因为我不需要它,但是当我看到它时我开始使用它。它会在悬停时删除链接,但在鼠标离开链接后会返回它。效果很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    • 1970-01-01
    • 2016-03-16
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 2019-07-09
    相关资源
    最近更新 更多