是jquery中元素上方的点
我在div上有一个textarea。在div中,我突出显示输入textarea的文本的某些部分。我试图将鼠标移到突出显示的事件上,但显然我做不到,因为它们在我的文本区域下。我在想,这是否可能使用textarea上的mousemove事件来跟踪鼠标坐标,但后来我认为这对我没有好处,因为如果高亮显示跨越,我无法确定确切的边界 所以问题是,我如何模拟mouseover和mouseout事件,因为它们位于其他元素下,所以没有接收到这些事件 编辑: 根据马库斯的回答,我完成了一个解决方案。mouseover/mouseout事件的完整代码:是jquery中元素上方的点,jquery,html,mouseover,mouseout,Jquery,Html,Mouseover,Mouseout,我在div上有一个textarea。在div中,我突出显示输入textarea的文本的某些部分。我试图将鼠标移到突出显示的事件上,但显然我做不到,因为它们在我的文本区域下。我在想,这是否可能使用textarea上的mousemove事件来跟踪鼠标坐标,但后来我认为这对我没有好处,因为如果高亮显示跨越,我无法确定确切的边界 所以问题是,我如何模拟mouseover和mouseout事件,因为它们位于其他元素下,所以没有接收到这些事件 编辑: 根据马库斯的回答,我完成了一个解决方案。mouseov
var mouseDown = false;
var mouseIsOver = false;
var lastOverElem = false;
textarea.mousemove(function(e) {
if (!mouseDown) {
textarea.hide();
var elm = $(document.elementFromPoint(e.pageX, e.pageY));
textarea.show();
if (elm.hasClass("highlighted")) {
/* MOUSE MOVE EVENT */
if (!mouseIsOver) {
mouseIsOver = true;
/* MOUSE OVER EVENT */
}
} else {
if (mouseIsOver) {
mouseIsOver = false;
if (lastOverElem) {
/* MOUSE OUT EVENT */
}
}
}
}
});
$('body').mousedown (function () {mouseDown = true;});
$('body').mouseup (function () {mouseDown = false;});
你可以用。显然,如果textarea
位于底层突出显示容器的前面,这是不起作用的,但是有一个应用程序可以实现这一点。在调用document.element frompoint
之前,您只需暂时隐藏文本区域
,然后直接显示它
var textarea = $("#linksTextarea");
textarea.on("mousemove", function(e) {
// Temporarily hide the textarea
textarea.hide();
// Get element under the cursor
var elm = $(document.elementFromPoint(e.pageX, e.pageY));
// Show the textarea again
textarea.show();
if (elm.hasClass("highlighted")) {
console.log("You're mouse is over highlighted text");
}
});
由于DOM是实时更新的,而它的呈现被延迟到所有JavaScript都被执行之后,因此您不必担心任何视觉故障
看。有很多想法可以帮助你。非常有趣。但是,我需要在另一个元素上方的textarea,以便用户可以键入文本、选择文本、上下文菜单等。指针事件:无;禁用所有这些功能。另外+1用于向我展示我不知道存在的技术,该页面上的回答建议暂时隐藏文本区域,然后使用document.elementFromPoint方法将事件传递给覆盖的元素。不过,不确定这会有多好。@ScottMutch实际上在实现我的测试用例之前没有阅读您的评论,但这正是它的工作方式:)我修改了您的小提琴以添加mousemove事件。但我想听听你的意见。所以你怎么认为?是不是太俗气了?或者它会在一个大型项目中站稳脚跟?@19greg96为什么它会太草率?没有比这更好的方法了;)不过,我可能会将
mousedown
和mouseup
组合起来,使用document
而不是body
,因为它的选择速度稍微快一点。