代码之家  ›  专栏  ›  技术社区  ›  Itay Moav -Malimovka

如何知道鼠标指针是否在HTML元素上?

  •  2
  • Itay Moav -Malimovka  · 技术社区  · 14 年前

    我有一个定时事件,我想根据鼠标指针所在的HTML元素的不同行为。
    假设我有HTML元素,有没有方法知道鼠标指针当前是否在它上面?
    我很清楚OnMouseOver/OnMouseOut事件以及如何使用它们。
    我正在使用jquery。
    我显然在寻找某种标志,因为我需要检查状态而不是处理事件。
    同样,我知道如何在事件中实现这一点。

    4 回复  |  直到 14 年前
        1
  •  3
  •   Community Aniket Inge    7 年前

    对于鼠标悬停的状态,我不知道任何内置的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
  •  3
  •   Brian Driscoll    14 年前

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

        3
  •  0
  •   Rinkesh    14 年前

    您需要为HTML和我命名,而在鼠标上,您需要检查document.getElementsByName。然后检查你的输出是什么。现在您可以决定是HTML控件还是ASP.NET。

    使用collobjects=object.getElementsByName(“htmlControl”)时,请比较两者的ID。

    1更重要的是,为什么您需要在javascript中检查它。可能还有其他解决办法。与我们分享。

        4
  •  0
  •   Kyle Jones    14 年前

    虽然我认为旧浏览器实现中存在一些不一致之处( http://www.quirksmode.org/dom/w3c_cssom.html documentview )。

    $('elem').mousemove(function(e){
    if(this==document.elementFromPoint(e.clientx,e.clienty))。{
    /做某事
    }
    (});
    < /代码> 
    
    

    或处理程序外部

    if($('elem').get(0)==document.elementFromPoint(x,y))。{
    /做某事
    }<代码> < /PRE>
    
    

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

    旧浏览器实现中的不一致性(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
    }

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