【发布时间】:2014-09-15 19:19:16
【问题描述】:
我正在尝试获取 div 内的单击位置,以便当我在鼠标拖动移动窗口时定位窗口时,鼠标光标将准确地位于初始位置(相对于移动窗口)的位置点击发生。
这是窗口:
<div id="PopUp" class="Popup">
<div id="PopUpTitleBar"><img class="xOut" onclick="ClosePopUp();" src="/images/xOut.png"></div>
<div class="InnerPopup">
<!-- <p>Here is the body of a pop up element.</p> -->
<p id="PopUpBody"></p>
</div>
</div>
我有这些方法来处理点击和拖动:
var firstClick = true;
var offsetX = 0;
var offsetY = 0;
function mouseUp()
{
window.removeEventListener('mousemove', divMove, true);
firstClick = true;
}
function mouseDown(e){
window.addEventListener('mousemove', divMove, true);
}
function divMove(e){
var div = document.getElementById('PopUp');
if (firstClick == true) {
offsetX = $('#PopUpTitleBar').offset().left;
offsetY = $('#PopUpTitleBar').offset().top;
firstClick = false;
}
var spotX = e.pageX - offsetX;
var spotY = e.pageY - offsetY;
div.style.top = spotY + 'px';
div.style.left = spotX + 'px';
}
除了我的 offsetX 和 offsetY 返回 PopUpTitleBar 左上角的位置而不是 PopUpTitleBar 内的点击位置之外,这种排序是有效的。
如何纠正这个问题,使我的偏移量相对于 PopUpTitleBar 的左上角内侧?
谢谢。
【问题讨论】:
-
我讨厌这种问题。很大程度上取决于样式。查看
offsetParent()api.jquery.com/offsetparent
标签: javascript jquery html mouseevent