如何检测鼠标是否在jQuery或Javascript中的项目上

时间:2011-07-06 15:28:41

标签: javascript jquery hover

是否可以检查光标是否在项目上?在我的情况下,我不能使用focus(),mouseenter()或任何相关的方法,但我只需要找出鼠标是否在它上面。

4 个答案:

答案 0 :(得分:2)

这可能有用吗? event.target

fiddle DEMO

例如:

function handler(ev) {
  var $target = $(ev.target);
  if( $target.is("#element") ) {
   alert('Here am I !');
  }
}
$("#element").hover(handler);

此处稍作修改删除元素

demo

function handler(ev) {
  var $target = $(ev.target);
  if( $target.is("#element") ) {
         $target.remove();
  }
}
$("#element").mouseleave(handler);

答案 1 :(得分:2)

在这种特殊情况下,您可以在要隐藏的覆盖元素之上创建透明覆盖元素,而不是检查鼠标的状态。

因此,当该区域悬停时,它会显示,而当它不是被隐藏时 显然使用默认设置要隐藏的元素(直到悬停) display:none;在你的css中 - 因此它只会在徘徊时显示给用户眼睛。

我知道这不是OP所要求的,但它确实有效。

$(document).ready(function(){
    /* 
    * #object is your element you 
    * want to hide unless hovered
    */
    $("#object").on("mouseleave", function(){
        // divs you want to hide/show
        $('#object').hide();
        $('#overlay').show();
    })

    /* 
    * #overlay is the transparent element 
    * that will sit over the top of #object
    */
    $("#overlay").on("mouseenter", function(){
        // divs you want to hide/show
        $('#object').show();
        $('#overlay').hide();
    })
});

看到它在这里工作http://jsfiddle.net/si_jsfiddle/CvkyE/

这是一个很好的选择,因为mouseenter和mouseleave不会受到顶部对象的影响,特别是在on()方法中设置了tag对象参数,这也是为什么它们对于带有链接的div容器非常有用的原因在顶部等...

答案 2 :(得分:0)

http://api.jquery.com/mouseover/这里是jquery函数。它也有一个很好的例子。

答案 3 :(得分:0)

<input etc.... onmouseover="if (condition){calltoafunction();"}>

On Javascript:如果Cursor位于Item上,则条件有效。