【发布时间】:2018-03-10 10:37:30
【问题描述】:
我正在尝试实现一个 ajax 加载的工具提示,它应该包含一个 HTML 表格。
在执行ajax调用时,tooltip首先显示“正在加载...”文本,然后在收到HTML数据时,将其用作tooltip内容。
问题是工具提示位置似乎只在开始时计算,当显示“正在加载...”时,而不是在工具提示内容更改时再次计算。
工具提示使用以下代码初始化:
$('.my_tooltip').each(function() {
var $this = $(this),
tooltip_url = $this.data('tooltip-url'),
cache_id = tooltip_url || '',
opts = $.extend({}, {
content: function(done) {
if(tooltip.cache[cache_id]) {
return tooltip.cache[cache_id];
}
if(tooltip_url) {
Ajax.get($this.data('tooltip-url'), {}, {
dataType: 'html',
success: function(data) {
tooltip.cache[cache_id] = data;
done(tooltip.cache[cache_id]);
},
error: function() {
done('Error while loading data!');
}
});
return 'Loading...';
}
return $this.attr('title');
},
items: $this,
tooltipClass: $this.data('tooltip-class') || ('age-tooltip' + (!tooltip_id && !tooltip_url ? '-auto' : ''))
}, options);
$this.tooltip(opts);
});
这是加载后的样子,因为你看到工具提示没有自动重新定位,所以你只能看到不到一半。
在这种情况下,如果它移动到带有工具提示的元素上,它将完全可见,但是即使我让工具提示消失然后再次移动鼠标悬停,从本地工具提示缓存中加载它,它不会重新定位。
我已经查看了工具提示的position 属性,但是如果可能的话,我希望避免手动指定它,并让插件自动处理它。
有没有办法将工具提示定位在 在 ajax 加载后大部分可见的位置?
编辑:
我尝试了@Stphane 的解决方案,位置为{my: 'left top+15', at: 'left bottom', of: this, collision: 'flipfit'},但位置不正确,似乎忽略了top/bottom 部分,而是采用了证书,如下所示:
查看控制台,我明白了
错误:工具提示小部件实例没有此类方法“实例”
我猜这可能是因为我们仍在使用 jQuery UI 版本 1.10.4
【问题讨论】:
标签: javascript jquery jquery-ui tooltip jquery-ui-tooltip