Vì tôi không thể bình luận, vì vậy tôi sẽ viết điều này như một câu trả lời!
Vui lòng hiểu sự khác biệt giữa bộ chọn css ": hover" và sự kiện di chuột!
": hover" là một bộ chọn css và thực sự đã bị xóa với sự kiện khi được sử dụng như thế này $("#elementId").is(":hover")
, nhưng trong ý nghĩa của nó, nó thực sự không liên quan gì đến di chuột sự kiện jQuery.
nếu bạn viết mã $("#elementId:hover")
, phần tử sẽ chỉ được chọn khi bạn di chuột bằng chuột. câu lệnh trên sẽ hoạt động với tất cả các phiên bản jQuery khi bạn chọn phần tử này với lựa chọn css thuần túy và hợp pháp.
Mặt khác, sự kiện di chuột là
$("#elementId").hover(
function() {
doSomething();
}
);
thực sự bị phản đối vì jQuery 1.8 ở đây là trạng thái từ trang web jQuery:
Khi tên sự kiện "hover" được sử dụng, hệ thống con sự kiện sẽ chuyển đổi nó thành "mouseenter mouseleave" trong chuỗi sự kiện. Điều này gây phiền nhiễu vì nhiều lý do:
Ngữ nghĩa: Di chuột không giống như chuột vào và để lại một phần tử, nó ngụ ý một số lượng giảm tốc hoặc trì hoãn trước khi bắn. Tên sự kiện: Event.type được trả về bởi trình xử lý đính kèm không phải là di chuột, mà là mouseenter hoặc mouseleave. Không có sự kiện khác làm điều này. Đồng chọn tên "hover": Không thể đính kèm một sự kiện có tên "hover" và kích hoạt nó bằng cách sử dụng .trigger ("hover"). Các tài liệu đã gọi tên này là "không khuyến khích mã mới", tôi muốn từ chối chính thức cho 1.8 và cuối cùng xóa nó.
Tại sao họ loại bỏ việc sử dụng là (": hover") không rõ ràng nhưng ồ, bạn vẫn có thể sử dụng nó như trên và đây là một chút hack để vẫn sử dụng nó.
(function ($) {
/**
* :hover selector was removed from jQuery 1.8+ and cannot be used with .is(":hover")
* but using it in this way it works as :hover is css selector!
*
**/
$.fn.isMouseOver = function() {
return $(this).parent().find($(this).selector + ":hover").length > 0;
};
})(jQuery);
Ồ và tôi sẽ không giới thiệu phiên bản hết thời gian chờ vì điều này mang đến nhiều sự phức tạp , hãy sử dụng các chức năng hết thời gian cho loại công cụ này nếu không có cách nào khác và tin tôi, trong 95% trường hợp có một cách khác !
Hy vọng tôi có thể giúp một vài người ngoài kia.
Chúc mừng Andy