我需要在jQuery UI工具提示中添加一个预定义,但似乎无法弄明白

时间:2013-01-17 21:07:54

标签: jquery jquery-ui tooltip

我需要在我的jQuery UI工具提示中添加一个预延迟。我正在使用最新版本(1.9)并希望在它们悬停后2秒开启提示。

我使用以下方法调用标题中的提示:

<script>
    $(function() {
        $( document ).tooltip({ predelay:2000,});   
    });
</script>

但是当他们被解雇时,他们没有任何延迟......任何帮助?

3 个答案:

答案 0 :(得分:23)

使用此

$( "#elementid" ).tooltip({
  show: {
    effect: "slideDown",
    delay: 250
  }
});

答案 1 :(得分:4)

我遇到了同样的问题,但终于提出了这个解决方案:

var opendelay = 500;
var closedelay = 500;
var target = $('.selector');
target.tooltip({ /* ... */ });
target.off('mouseover mouseout');
target.on('mouseover', function(event) {
    event.stopImmediatePropagation();
    clearTimeout(target.data('closeTimeoutId'));
    target.data('openTimeoutId', setTimeout(function() { target.tooltip('open'); }, opendelay));
});
target.on('mouseout', function(event) {
    event.stopImmediatePropagation();
    clearTimeout(target.data('openTimeoutId'));
    target.data('closeTimeoutId', setTimeout(function() { target.tooltip('close'); }, closedelay));
});

基本上它的作用是:

  • 禁用工具提示的默认onMouseOver事件
  • 为使用setTimeout()
  • 延迟的工具提示添加新的mouseOver-event
  • 添加一个取消超时的新mouseOut事件(这可以防止工具提示显示以防鼠标在延迟时间之前离开目标区域)
  • BONUS:它还使用相同的技术添加了类似于“opendelay”又名“predelay”的“closedelay”
  • 只有在某些情况下才需要
  • event.stopImmediatePropagation();。例如。如果您希望tooltip-element在悬停IT时保持可见(打开后)。如果需要,请在工具提示中注册相同的悬停事件:target.tooltip({ open: function (event, ui) { ui.tooltip.hover(..., ...); } });
  • P.S。您还可以将其中一些调用链接起来,例如onoff
  • 可能可以通过targetthis替换事件函数中的$(this)。但我不确定,也没有尝试过;毕竟可能不起作用。
  • 如果您不需要closeDelay,只需删除包含closeTimeoutIdclosedelay的行并删除mouseout中的target.off('mouseover mouseout');或将其设置为0
  • 如果您不需要openDelay,那么同样如此......反之亦然

答案 2 :(得分:0)

IE有悬挂逗号的问题,也许尝试删除它,看看是否有帮助:

$( document ).tooltip({ delay:2000 });