我在鼠标点击的确切位置弹出窗口时遇到了麻烦。我希望能够点击一个DIV(位于表格单元格内),并在每次点击该DIV时弹出窗口。
现在,我有弹出工作,但无论我尝试弹出DIV是一半的方式向下页。
超文本标记语言
<ul class="customdropdown" style="display:none;" id="xxx<?php echo $fetch['unit_no']; ?>" role="menu" aria-labelledby="menuitems">
<li role="presentation"><a role="menuitem" tabindex="-1" href="#"</i>Link 1</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="#"</i>Link 2</a></li>
</ul>
查询
$(document).ready(function () {
$('#myDiv<?php echo $fetch['unit_no']; ?>').click(function (e) {
var myDiv = document.getElementById('myDiv<?php echo $fetch['unit_no']; ?>');
var leftx = e.pageX-myDiv.offsetLeft;
var topy = e.pageY-myDiv.offsetTop;
$("#xxx<?php echo $fetch['unit_no']; ?>")
.css({
position: 'absolute',
left: leftx,
top: topy,
display: 'block'
})
});
});
下面是正在发生的事情的截图:
这是否与DIV的定位有关?
2条答案
按热度按时间irtuqstp1#
这取决于您的弹出窗口(工具提示)是位于
absolute
还是fixed
,并且父对象具有除static
集之外的任何position
集,以及弹出窗口是否位于 Package 器内部;或者是body
的直接子节点。1.* * 绝对弹出作为非静态父项的子项(有优点和缺点)
1.* * 修复了弹出窗口(有优点和缺点)
1.* * 绝对**弹出窗口作为文档
<body>
的直接子项(最佳)1.将绝对子对象移动到父对象中的X,Y坐标
用例:
position: relative;
父项中的position: absolute;
弹出窗口。overflow
值不是visible
)示例:
一个一个二个一个一个一个三个一个一个一个一个一个四个一个
优点:
*缺点
target
,则需要附加代码来防止弹出窗口移动-允许与内部内容交互,并且弹出窗口不移动。#area
)需要一个position
集合(而不是static
),即:position: relative;
2.将固定元素移动到X,Y坐标
用例:
position: fixed;
弹出在父项之外(或之内),但通常作为<body>
的子项。示例:
优点:
#area
)的外部-如果单击是在父对象内部启动的,则不需要额外的代码来防止父对象移动。#area
)不需要position
。Event.clientX
和Event.clientY
是将其移动到新位置所需的全部。*缺点
3.(最佳!)将绝对(* in-body *)元素移动到X,Y坐标
用例:
position: absolute;
弹出为body
的直接子项示例:
一个10块一个11块一个12块一个
优点:
Event.currentTarget
是整个"body"
)如果点击其内容,弹出窗口将不会改变位置。针对所有情况的建议:
Event.target.closest("#popup") !== EL_popup
(如果true
,则关闭弹出窗口)来实现。这一点有时适用于上下文菜单,但很少适用于窗口居中的模态-它有一个专用的 * 关闭 * 按钮。一个一个三个一个一个一个四个一个一个一个一个
ukqbszuj2#
如果你想在鼠标点击的确切位置得到一个弹出窗口,你真的只需要知道鼠标在窗口中点击的位置。你的点击监听器已经瞄准了DIV,所以这只会记录这个区域的点击,所以你可以只使用event.clientX和event.clientY来得到指针的位置。