我想将工具提示向右移动几个像素,因此箭头位于光标所在单元格的中心(当前,它位于(0,0),即左上角)。这是我的代码:
$("rect.cell").tooltip({
title: "hola",
placement: "top"
});
和一张图片:
理想情况下,我想使用 javascript 来执行此操作,因此如果我更改单元格的大小,我可以更新像素数。
我想将工具提示向右移动几个像素,因此箭头位于光标所在单元格的中心(当前,它位于(0,0),即左上角)。这是我的代码:
$("rect.cell").tooltip({
title: "hola",
placement: "top"
});
和一张图片:
理想情况下,我想使用 javascript 来执行此操作,因此如果我更改单元格的大小,我可以更新像素数。
这是 nachocab 的 getPosition 实现的简单扩展,它支持常规 HTML 元素和 SVG 元素:
getPosition: function (inside) {
var el = this.$element[0]
var width, height
if ('http://www.w3.org/2000/svg' === el.namespaceURI) {
var bbox = el.getBBox()
width = bbox.width
height = bbox.height
} else {
width = el.offsetWidth
height = el.offsetHeight
}
return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
'width': width
, 'height': height
})
}
它似乎是 SVG 元素的 Firefox/Chrome 中的一个错误(就像我的情况一样)https://bugzilla.mozilla.org/show_bug.cgi?id=649285
所以我只是从这里更改了 bootstrap-tooltip.js:
getPosition: function (inside) {
return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
width: this.$element[0].offsetWidth
, height: this.$element[0].offsetHeight
})
}
对此:
getPosition: function (inside) {
return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
width: this.$element[0].getBBox().width
, height: this.$element[0].getBBox().height
})
}
我发现 Chrome(适当的高度,但位于 svg:rect 元素的最左侧)和 Firefox(适当的高度,完全不正确的 x 位置)中的定位是不稳定的。我一直在使用 jQuery 的 svgdom 插件(不确定这是否会影响我的结果),但这是我想出的解决方案:
https://gist.github.com/2886616
这是与组合 boostrap.js 的差异。这是其他人针对引导程序提出的长期休眠问题: