我如何知道鼠标指针是否位于 HTML 元素上?

发布于 2024-09-12 16:16:46 字数 222 浏览 6 评论 0原文

我有一个定时事件,我想根据鼠标指针所在的 HTML 元素采取不同的行为。
假设我有 HTML 元素,有没有办法知道鼠标指针当前是否位于其顶部。
我非常了解 onmouseover/onmouseout 事件以及如何使用它们。
我正在使用 JQuery。
我显然正在寻找某种标志,因为我需要检查状态而不是处理事件。
再说一遍,我知道如何通过事件来实现这一点。

I have a timed event I want to behave differently accordingly to what HTML element the mouse pointer is on.
Is there a way, assuming I have the HTML element, to know if the mouse pointer is currently on top of it.
I am well aware of the onmouseover/onmouseout events and how to use them.
I am using JQuery.
I am obviously looking for some kind of flag, as I need to check a state and not handle an event.
again, I know how to implement this with events.

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

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

发布评论

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

评论(4

最美的太阳 2024-09-19 16:16:46

我不知道有任何内置方法可以对元素执行 ping 操作以了解鼠标悬停的状态。

但是,您可以通过更新 mouseenter 和 mouseleave 处的标志来创建一个 - 这就是 Brian Driscoll 的 建议 < a href="http://api.jquery.com/hover/" rel="nofollow noreferrer">.hover 出现:

jQuery.fn.tracking = function () {
  this.data('hovering', false);

  this.hover(function () {
    $(this).data('hovering', true);
  }, function () {
    $(this).data('hovering', false);
  });

  return this;
};

jQuery.fn.hovering = function () {
  return this.data('hovering');
}

您需要初始化每个元素的跟踪你关心:

$('#elem1,#elem2').tracking();

但是你可以获得其中任何一个的状态:

if ($('#elem1').hovering()) {
    // ...
} else if ($('#elem2').hovering()) {
    // ...
}

演示: http://jsbin.com/ amaxu3/编辑

I'm not aware of any built-in way to ping an element for the status of mouse hovering.

However, you can create one by updating a flag at mouseenter and mouseleave -- which is where Brian Driscoll's suggestion of .hover comes in:

jQuery.fn.tracking = function () {
  this.data('hovering', false);

  this.hover(function () {
    $(this).data('hovering', true);
  }, function () {
    $(this).data('hovering', false);
  });

  return this;
};

jQuery.fn.hovering = function () {
  return this.data('hovering');
}

You'll need to initialize tracking for each element you care about:

$('#elem1,#elem2').tracking();

But then you can get the status of any of them:

if ($('#elem1').hovering()) {
    // ...
} else if ($('#elem2').hovering()) {
    // ...
}

Demo: http://jsbin.com/amaxu3/edit

神仙妹妹 2024-09-19 16:16:46

你研究过 jQuery.hover() 吗? http://api.jquery.com/hover/

Have you looked into jQuery.hover()? http://api.jquery.com/hover/

万人眼中万个我 2024-09-19 16:16:46

您需要为 html 和me 指定名称,并且在鼠标悬停时您需要检查 document.getelementsbyName。然后检查你得到的输出是什么。现在您可以决定是 html 控件还是 asp.net。

当您使用 collObjects = object.getElementsByName("htmlcontrol") 时,请比较两者的 id。

1 更多为什么你需要在 javascript 中检查这个。可能还有其他解决方案。请与我们分享。

You need to give name to html andme and on mouseover you need to check document.getelementsbyName. Then check what your are getting as output. Now you can take decision is it html control or asp.net.

When you use collObjects = object.getElementsByName("htmlcontrol") then compare id of both.

1 morething why you needed to check this in javascript. there may be some other solution for that. Just share with us.

可爱咩 2024-09-19 16:16:46

您可能会对 document.elementFromPoint 有一些运气,尽管我相信旧版浏览器实现中存在一些不一致(http://www.quirksmode.org/dom/w3c_cssom。 html#documentview)。

$('#elem').mousemove(function(e){
    if (this == document.elementFromPoint(e.clientX, e.clientY)) {
        // Do stuff
    }
});

或者在处理程序之外

if ($('#elem').get(0) == document.elementFromPoint(x, y)) {
    // Do stuff
}

除此之外,想到的唯一其他选择是使用事件处理程序来跟踪鼠标位于哪个元素上。

You might have some luck with document.elementFromPoint, although I believe there are some inconsistencies in older browser implementations (http://www.quirksmode.org/dom/w3c_cssom.html#documentview).

$('#elem').mousemove(function(e){
    if (this == document.elementFromPoint(e.clientX, e.clientY)) {
        // Do stuff
    }
});

Or outside of a handler

if ($('#elem').get(0) == document.elementFromPoint(x, y)) {
    // Do stuff
}

Aside from that, the only other option that comes to mind is using event handlers to keep track of which element the mouse is over.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文