2009-10-13 33 views
42

Tôi đã thử $.unbind('hover'), không hoạt động.

+0

Bạn có quy định cụ thể những gì yếu tố để unbind sự kiện này từ đâu? ví dụ: $ ("a"). unbind ("hover") – Marius

+0

Có, nó được thêm bởi $ ("# id"). hover (...) và $ ("# id"). unbind ('hover') không hoạt động. – Mask

+2

có thể trùng lặp của [Làm cách nào để bỏ liên kết "di chuột" trong jQuery?] (Http://stackoverflow.com/questions/805133/how-do-i-unbind-hover-in-jquery) – madth3

Trả lời

74

Chức năng hover nó chỉ là một short-hand để ràng buộc hai bộ xử lý đến mouseentermouseleave sự kiện, bạn nên unbind họ:

$('#item').unbind('mouseenter mouseleave'); 
+4

Bạn có thể kết hợp các cuộc gọi đó: '.unbind ('mouseout mouseout');' – nickf

+0

Cảm ơn @nickf, đã chỉnh sửa để thêm đề xuất của bạn. – CMS

+1

Nó vẫn không hoạt động – Mask

-2

Bạn cũng có thể thử:

$('#item').bind('hover', function(){return false})

+6

Ràng buộc các trình xử lý sự kiện bổ sung vào một đối tượng không ghi đè các trình xử lý bị ràng buộc trước đây. Điều này có thể làm việc tốt, vì 'return false' có thể dừng việc truyền, nhưng nó không phải là một giải pháp tuyệt vời. – nickf

2

tringger unbinding với một cú nhấp chuột

$('.item').click(function() { 
$('.item').unbind('mouseenter mouseleave'); 
}); 
11

Api documentation on hover:

Ví dụ: Để unbind ví dụ sử dụng trên:

$("td").off('mouseenter mouseleave'); 
+2

Sự khác biệt trong 'off' và' unbind' là gì? – Ian

+4

Như được định nghĩa trong [** unbind() **] (https://api.jquery.com/unbind/): Trình xử lý _Event gắn với .bind() có thể được loại bỏ bằng .unbind(). (Theo jQuery 1.7, các phương thức .on() và .off() được ưu tiên để đính kèm và loại bỏ các trình xử lý sự kiện trên các phần tử.) _ – diynevala

Các vấn đề liên quan