我目前正在使用以下代码初始化Bootstrap工具提示的延迟初始化版本。在第一次悬停后,一切都在延迟方面工作正常,但在最初的悬停时它立即显示。我知道这是因为$(this).tooltip('show');
方法,但我不知道如何使用延迟并同时显示。我必须使用$(this).tooltip('show');
,因为一旦悬停,元素不会显示工具提示,除非我搬出去。
$(element).on('hover', '.item', function () {
matchup = ko.dataFor(this).Matchup;
if (matchup) {
if ($(this).attr('data-original-title') != '') {
$(this).tooltip({ title: matchup.Title, html: true, delay: 1000 });
$(this).tooltip('show');
}
}
});
更新了答案
$(element).on('mouseenter', '.item', function (e) {
matchup = ko.dataFor(this).Matchup;
if (matchup) {
if ($(this).attr('data-original-title') != '') {
$(this)
.addClass('tooltip-init')
.tooltip({ title: matchup.Title, html: true, delay: { show: 1000, hide: 0 } })
.trigger(e.type);
}
});
答案 0 :(得分:1)
尝试使用触发器
尝试以下代码
$(this).tooltip({
title: matchup.Title,
html: true,
trigger: 'hover',
delay: delay: { show: 2000, hide: 3000 }
}).trigger('hover');
答案 1 :(得分:1)
我发现福尔摩斯使用延迟来回答工作,但不可靠。当移动一系列物品时,悬停似乎停止显示。在另一个导致此jsfiddle by Sherbrow的stackoverflow答案的帮助下,我简化了代码并使其在this jsfiddle中运行。以下简化代码:
var enterTimeout = false;
$('[rel="tooltip"]').tooltip({trigger:'manual'}).on('mouseenter', function() {
var show = function(n) {
enterTimeout = setTimeout(function(n) {
var isHovered = n.is(":hover");
if (isHovered) n.tooltip('show');
enterTimeout = false;
}, 750);
};
if(enterTimeout) clearTimeout(enterTimeout);
show( $(this) );
});
$('[rel="tooltip"]').on('mouseout click',function() {
$(this).tooltip('hide');
});