gpt4 book ai didi

javascript - 快速移动鼠标永远不会触发 mouseleave 事件

转载 作者:行者123 更新时间:2023-11-29 14:59:50 24 4
gpt4 key购买 nike

当鼠标悬停在我网站上的某些按钮上时,我希望显示工具提示来指导用户。基本上,只要将鼠标悬停在具有“has_tooltip”类的按钮上,就会附加一个工具提示。

$('.has_tooltip').live({
mouseenter : function(e) {
if($('#tooltip_container').length > 0){
$('#tooltip_container').remove();
}

var $t = $(this), text = $t.attr('rel'), left = e.pageX-25, top = e.pageY-25;
if($t.attr('rev') === '1') {
text += ' <span class="tooltip_warning">You must be <a href="/users/login" class="modal-dynamic">logged in</a> to make use of this.</span>'
}
$tooltip = $('<div id="tooltip_container">'+text+'</div>');
$('body').prepend($tooltip);

$tooltip.css({
left: left+'px',
top: top+'px'
});

},

});

当用户的光标离开新创建的工具提示框时,它应该消失

$('#tooltip_container').live({
mouseleave : function(e){
$(this).remove();
}

});

但是,在具有“has_tooltip”类的按钮上快速移动鼠标会添加工具提示,但移动速度太快以至于无法触发 mouseleave 事件。

有人对我如何解决这个问题有一些建议吗?

最佳答案

'如果鼠标没有进入tooltip(tooltip出现在鼠标下方),浏览器可能不会触发mouseleave事件。您可能想要添加一个额外的选择器。试试这个:

$('#tooltip_container','.has_tooltip').live({
mouseleave : function(e){
$('#tooltip_container').remove();
}
});

虽然我强烈建议从您的工具提示方法中删除 HTML...尝试创建一个空的 div 并在您显示它时添加工具提示文本和定位 - 尝试尽可能少地添加到 DOM(创建大多数工具提示 HTML 的隐藏 div,仅在必要时更改其实际文本内容)。

理想情况下,您的 mouseenter 应该简单地替换工具提示文本并显示正确定位的 div。 mouseleave 事件应该只是 hide() tooltip div(而不是将其从 DOM 中移除只是为了稍后创建和添加)。

关于javascript - 快速移动鼠标永远不会触发 mouseleave 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11800910/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com