我怎么知道鼠标指针是否在HTML元素上?

时间:2010-08-03 18:36:32

标签: javascript jquery html events dhtml

我有一个定时事件,我想根据鼠标指针所在的HTML元素采取不同的行为 有没有办法,假设我有HTML元素,知道鼠标指针当前是否在它上面 我很清楚onmouseover / onmouseout事件以及如何使用它们 我正在使用JQuery 我显然正在寻找某种旗帜,因为我需要检查状态而不是处理事件 再次,我知道如何通过事件来实现这一点。

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

我不知道有任何内置的方法来ping一个元素以获得鼠标悬停的状态。

但是,你可以通过在mouseenter和mouseleave更新一个标志来创建一个标志 - 这是Brian Driscoll's .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/edit

答案 2 :(得分:0)

你可能对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
}

除此之外,我想到的另一个选择是使用事件处理程序来跟踪鼠标所在的元素。

答案 3 :(得分:0)

你需要给html andme命名,在mouseover上你需要检查document.getelementsbyName。然后检查你得到的输出。现在你可以决定是html控件还是asp.net。

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

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