2012-03-05 154 views
1

在下一页我有一个应该在图像旁边显示的弹出窗口,具体取决于弹出窗口显示的更大/更接近鼠标的窗口大小。我不明白代码有什么问题,这使得弹出窗口不会显示在与鼠标相同的位置?鼠标坐标无法正常工作,

http://www.hughgrice.com/test/

jQuery(document).mousemove(function (e) { 

    mouseX = e.pageX; 
    mouseY = e.pageY; 

    follow(); 
}); 

function follow(){ 
    d = document.getElementById("thumbTT"); 
    if(openToolTip){ 
     d.style.display = "block"; 
     d.style.left = mouseX+5 + "px"; 
     d.style.top = mouseY-100 + "px"; 
    }else{ 
     d.style.display = "none"; 
    } 
} 

http://www.hughgrice.com/test/

+0

那么,什么是你的问题? – ShankarSangoli 2012-03-05 13:40:48

+1

JavaScript具有词汇范围界定,而不是动态范围界定。你必须将值作为参数传递给函数调用... – 2012-03-05 13:40:48

+0

感谢您的有用评论Sime,你认为这是什么原因造成的问题? – Burt 2012-03-05 13:45:21

回答

1

这应该工作:

var $elem = $('#thumbTT'); 

$(document).on('mousemove', function (e) { 
    follow(e.pageX, e.pageY); 
}); 

function follow (x, y) {   
    if(openToolTip) { 
     $elem.css({ left: x + 5, top: y - 100 }).show(); 
    } else { 
     $elem.hide(); 
    } 
} 

我假设#thumbTT元素是静态的,所以我事先缓存引用。

1

由于您的wrapper DIV是相对定位,所以它没有正确定位。要么你必须从你的包装DIV删除position:relative,或者你必须写mousemove function

jQuery(document).mousemove(function (e) { 
    var offset = jQuery(this).css('offset'); 

      mouseX = offset.left; 
      mouseY = offset.top; 
      follow(); 
     }); 

也许您需要调整您的代码