悬停时,我在元素中间显示了一个jQuery UI 工具提示。但是当将鼠标悬停在它上面时,工具提示本身就会消失。(propagation
问题)
元素:
带有工具提示:
因此,当我将工具提示本身悬停时,我想它会因为传播问题而消失。
HTML:
<div class="bar-wrapper">
<label class="bar-lbl active one" title="2013"><span>2013</span></label>
<div class="bar" data-percent="90"></div>
<div class="bar-rest-overlay" data-percent="10"></div>
</div>
<div class="bar-wrapper">
<label class="bar-lbl active one" title="2014"><span>2014</span></label>
<div class="bar" data-percent="80"></div>
<div class="bar-rest-overlay" data-percent="20"></div>
</div>
当前代码:
$('.bar-lbl').tooltip(
{
tooltipClass: 'bar-tooltip',
position:
{
my: 'center',
at: 'center'
}
});
部分修复(但使工具提示永久可见):
$('.bar-lbl').on('mouseleave',
function(e)
{
e.stopImmediatePropagation();
}).tooltip(
{
tooltipClass: 'bar-tooltip',
position:
{
my: 'center',
at: 'center'
}
});
不工作:
$('body').on('hover', '.ui-tooltip',
function(e)
{
e.stopImmediatePropagation();
});
更新:感谢Trevor,我找到了一个接近的解决方案。(悬停时它仍然使最后一个悬停的工具提示可见):
似乎,当悬停在工具提示本身时,它会隐藏起来。但是悬停在.bar-lbl
元素之外,工具提示保持可见,除非我悬停另一个.bar-lbl
元素。
问题出on('mouseleave')
在我的.bar-lbl
. 我需要两条线,但它们会相互干扰。(看评论)
$('.bar-lbl').on('mouseenter',
function(e)
{
$('.bar-lbl').not($(this)).tooltip('close'); // Close all other tooltips
}).on('mouseleave',
function(e)
{
e.stopImmediatePropagation(); // keeps tooltip visible when hovering tooltip itself
$('.bar-lbl').tooltip('close'); // I need this, but it breaks the line above, causing the tooltip to flicker
}).tooltip(
{
tooltipClass: 'bar-tooltip',
position:
{
my: 'center',
at: 'center'
}
});
$('body').on('mouseleave', '.ui-tooltip',
function(e)
{
$('.bar-lbl').tooltip('close');
});