我正在使用工具提示插件,其中包含以下选项:
Mouse = True | False。相对于鼠标或元素的工具提示位置;
静态=真|假。选项Mouse = true时跟随鼠标。
我有一个JSFiddle示例:http://jsfiddle.net/mdmoura/RPUX6/
问题:
当我将鼠标放在列表的最后工具提示上时,位置错误。
每次滚动页面都会发生这种情况......我不知道为什么。
设置位置的代码部分是:
$(this).each(function (e) {
// SOME CODE
$this.mouseenter(function (e) {
var $tooltip =
$("<div>")
.attr("class", options.class)
.html(options.content !== '' ? (typeof options.content === 'string' ? options.content : options.content($this, $tooltip)) : tooltip.title)
.appendTo('body');
$this.attr('title', '');
var position = [0, 0];
if (options.mouse) {
position = [e.clientX + options.offset[0], e.clientY + options.offset[1]];
} else {
var coordinates = $this[0].getBoundingClientRect();
position = [
(function () {
if (options.offset[0] < 0)
return coordinates.left - Math.abs(options.offset[0]) - $tooltip.outerWidth();
else if (options.offset[0] === 0)
return coordinates.left - (($tooltip.outerWidth() - $this.outerWidth()) / 2);
else
return coordinates.left + $this.outerWidth() + options.offset[0];
})(),
(function () {
if (options.offset[1] < 0)
return coordinates.top - Math.abs(options.offset[1]) - $tooltip.outerHeight();
else if (options.offset[1] === 0)
return coordinates.top - (($tooltip.outerHeight() - $this.outerHeight()) / 2);
else
return coordinates.top + $this.outerHeight() + options.offset[1];
})()
];
}
$tooltip.css({ left: position[0] + 'px', top: position[1] + 'px' });
您还可以在http://jsfiddle.net/mdmoura/RPUX6/中看到代码和演示。
谢谢!
答案 0 :(得分:2)
您需要考虑窗口的scrollTop和scrollLeft。
基本理念:
var win = $(window);
$tooltip.css( {
left: position[0] + win.scrollLeft() + 'px',
top: position[1] + win.scrollTop() + 'px'
});
答案 1 :(得分:1)
按
添加scrollTopdocument.body.scrollTop
你会很高兴...
在您的代码中进行这些更改
function(){ if(options.offset [1]&lt; 0) return coordinates.top - Math.abs(options.offset [1]) - $ tooltip.outerHeight() + document.body.scrollTop ; 否则if(options.offset [1] === 0) return coordinates.top - (($ tooltip.outerHeight() - $ this.outerHeight())/ 2) + document.body.scrollTop ; 其他 return coordinates.top + $ this.outerHeight()+ options.offset [1] + document.body.scrollTop ;
})