jQuery:如何全局获取整个文档正文中我悬停的最里面的 dom 元素?

发布于 2024-11-02 01:40:25 字数 214 浏览 0 评论 0原文

我想检测鼠标在整个文档主体上的移动,并能够准确地判断我将鼠标悬停在 DOM 的哪一部分上。我所说的“哪一部分”是指鼠标当前位于最里面的 DOM 元素。

我可以将悬停绑定到整个文档正文,但是 $(this) 会给我 $(body),而不是最里面的元素。或者我可以递归地迭代整个 DOM 并将悬停绑定到每个元素,但这在我看来是一个严重的矫枉过正。

有没有一种简单的方法可以实现这一目标?

I'd like to detect mouse movements over the whole document body, and be able to tell exactly which part of the DOM I'm hovering over. By "Which part" I mean the innermost DOM element that the mouse is currently over.

I could bind a hover to the whole document body, but then the $(this) would give me the $(body), not the innermost element. Or I could iterate over the whole DOM recursively and bind a hover to each elements, but that would be a serious overkill IMO.

Is there an easy way to achieve this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

澉约 2024-11-09 01:40:25

jQuery 的 event.target 应该可以解决问题:

$("body").click(function(event) {
  console.log($(event.target));
});

jQuery's event.target should do the trick:

$("body").click(function(event) {
  console.log($(event.target));
});
三月梨花 2024-11-09 01:40:25

根据 Jasie 的建议,我最终使用了以下代码:

var currentNode = null;
$('body').mousemove(function(event) {
  if ($(event.target) !== currentNode) {
    currentNode = $(event.target);
    console.log(currentNode);
  }
});

Based on Jasie's suggestion, I ended up using the following code:

var currentNode = null;
$('body').mousemove(function(event) {
  if ($(event.target) !== currentNode) {
    currentNode = $(event.target);
    console.log(currentNode);
  }
});
对你的占有欲 2024-11-09 01:40:25

:) 考虑所有元素,例如:

<div>this is div</div>
<span>this is span</span>
<p>This is p</p>
<a>this a</a>
<ul><li>this is ul li</li></ul>
<ol><li>This is ol li</li></ol>
<img src="" />
<textarea id="text"></textarea>

文本区域仅向您显示结果。

jQuery("div,span,p,a,ul,ol,img").hover(function(){
    jQuery("#text").append(jQuery(this).html() + 
                           "<br />");
},function(){
}
);

:) think of all the elements, Like:

<div>this is div</div>
<span>this is span</span>
<p>This is p</p>
<a>this a</a>
<ul><li>this is ul li</li></ul>
<ol><li>This is ol li</li></ol>
<img src="" />
<textarea id="text"></textarea>

The textarea is to show you the result only.

jQuery("div,span,p,a,ul,ol,img").hover(function(){
    jQuery("#text").append(jQuery(this).html() + 
                           "<br />");
},function(){
}
);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文