gpt4 book ai didi

javascript - 获取鼠标位置或元素位置

转载 作者:行者123 更新时间:2023-11-28 20:31:56 24 4
gpt4 key购买 nike

我正在开发一个具有以下选项的工具提示插件:

  1. 鼠标 = True|False。工具提示相对于鼠标或元素的位置;

  2. 静态 = 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/ 中查看代码和演示.

谢谢!

最佳答案

您需要考虑scrollTopscrollLeft window 的。

基本思想:

var win = $(window);
$tooltip.css( {
left: position[0] + win.scrollLeft() + 'px',
top: position[1] + win.scrollTop() + 'px'
});

关于javascript - 获取鼠标位置或元素位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16195544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com