2011-11-04 3 views

Trả lời

13

:hover là gì là một CSS pseudo-class , không phải bộ chọn jQuery. Nó không thể được sử dụng một cách đáng tin cậy với is() trên tất cả các trình duyệt.

+1

vậy làm thế nào tôi sẽ kiểm tra là chuột trên một phần tử hay không –

+0

Liên kết trong Connell của một swer khá hữu ích. –

+1

Tôi cầu xin sự khác biệt: http://jsfiddle.net/cSCF7/1/ –

6

Như Frederic đã nói, :hover là một phần của CSS và không phải là bộ chọn trong jQuery.

Đối với một giải pháp thay thế, đọc How do I check if the mouse is over an element in jQuery?

cài đặt thời hạn trên mouseout để fadeOut và lưu trữ các giá trị trả về để dữ liệu trong đối tượng. Sau đó onmouseover, hủy bỏ thời gian chờ nếu có giá trị trong dữ liệu.

Xóa dữ liệu trên gọi lại của chế độ fadeout.

1

tại sao bạn không sử dụng .hover?

$(".xx").hover(function(){ 
    alert("d"); 
}); 
1

Hãy thử một cái gì đó giống như this-

$('.xx').hover(function(){   
     alert('d'); 
    }, function() { 
     alert('f); 
    }); 
+1

cách nó giúp tôi kiểm tra di chuột của cha mẹ! – Adrian

27
function idIsHovered(id){ 
    return $("#" + id + ":hover").length > 0; 
} 

http://jsfiddle.net/mathheadinclouds/V342R/

+1

Điều này hoạt động hoàn hảo. Tôi không chắc tại sao điều này không được bình chọn. Nó hoàn thành chính xác những gì OP cần, mà không cần phải đặt cờ trên toàn bộ mã của bạn. – friggle

0

Hãy thử một cái gì đó như thế này

flag = ($('.xx:hover').length>0); 

Vì vậy, bạn có thể tìm hiểu xem chuột là, đối tượng

0
x.filter(':hover').length 

Điều này cũng có thể sử dụng được khi bạn đã truy vấn một số đối tượng/hoặc bên trong chức năng gọi lại.

0

Dưới đây là một số ít Plugin jQuery kiểm tra xem con chuột có trên một phần tử hay không.

Cách sử dụng:

$("#YourElement").isMouseOverMe();

Ví dụ:

(function($) { 
 

 
    var mx = 0; 
 
    var my = 0; 
 

 
    $(document).mousemove(function(e) { // no expensive logic here 
 
    mx = e.clientX; 
 
    my = e.clientY; 
 
    }) 
 

 
    $.fn.isMouseOverMe = function() { 
 

 
    var $el = $(this); 
 
    var el_xmin = $el.offset().left; 
 
    var el_ymin = $el.offset().top; 
 
    var el_xmax = el_xmin + $el.width(); 
 
    var el_ymax = el_ymin + $el.height(); 
 
    return mx >= el_xmin && mx <= el_xmax && my >= el_ymin && my <= el_ymax; 
 
    }; 
 

 
}(jQuery)); 
 

 
$(document).mouseup(function(e) { 
 
    console.log($("#div").isMouseOverMe()) 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<h2>Click inside or outside of the yellow box</h2> 
 
<div id="div" style="width:200px;height:200px;background-color:yellow;margin-top:50px"></div>