在底部查看我的更新
我也一直在解决这个问题,并提出了类似于@Gaby 提供的解决方案。@Gaby 的解决方案的问题在于它不会在 mouseover 事件发生之前创建 qTip。这意味着您在第一次鼠标悬停时不会看到 qTip,但第二次会看到。此外,每次鼠标悬停时它都会重新创建 qTip,这并不是最佳的。
我采用的解决方案是:
$("li").live('mouseover', function() {
var target = $(this);
if (target.data('qtip')) { return false; }
target.qtip(...);
target.trigger('mouseover');
});
这是它的作用:
- 将目标设置为 li 元素
- 如果该 li 元素已经有一个 qtip,则返回
- 如果 li 上没有 qtip,则对其应用 qtip
- 再次发送 mouseover 触发器以激活 qtip
我知道这有点hacky,但它似乎工作。另请注意,qTip 的 2.0 版本应支持 live()作为选项。据我所知,当前的 2.0 开发分支还不支持它。
更新:
这是执行此操作的正确方法,直接来自论坛上的 qtip 开发人员本人:
$('selector').live('mouseover', function() {
$(this).qtip({
overwrite: false, // Make sure another tooltip can't overwrite this one without it being explicitly destroyed
content: 'I\'m a live qTip', // comma was missing here
show: {
ready: true // Needed to make it show on first mouseover event
}
});
})
因此,它首先确保您不会在每次鼠标悬停时都使用“overwrite: false”重新创建新的 qtip。然后它使用“show: {ready: true}”在第一次鼠标悬停时显示 qtip。