나는 언급 할 수 없으므로 이것을 답변으로 쓰겠습니다!
CSS 선택기 ": hover"와 호버 이벤트의 차이점을 이해하십시오!
": hover"는 CSS 선택기이며 이와 같이 사용될 때 실제로 이벤트와 함께 제거 $("#elementId").is(":hover")
되었지만 jQuery 이벤트 호버와는 아무런 관련이 없습니다.
코드를 작성 $("#elementId:hover")
하면 마우스로 가리키면 요소가 선택됩니다. 위의 문장은 순수하고 적절한 CSS 선택 으로이 요소를 선택하면 모든 jQuery 버전에서 작동합니다.
반면에 이벤트 호버는
$("#elementId").hover(
function() {
doSomething();
}
);
jQuery 웹 사이트의 상태는 실제로 jQuery 1.8로 더 이상 사용되지 않습니다.
이벤트 이름 "hover"가 사용되면 이벤트 서브 시스템은 이벤트 문자열에서이를 "mouseenter mouseleave"로 변환합니다. 이것은 여러 가지 이유로 성가시다.
시맨틱 스 : 호버링은 마우스가 요소에 들어오고 나가는 것과 같지 않으며, 발사 전에 어느 정도의 감속 또는 지연을 의미합니다. 이벤트 이름 : 연결된 처리기에서 반환 한 event.type이 마우스 오버가 아니라 mouseenter 또는 mouseleave입니다. 다른 이벤트는이 작업을 수행하지 않습니다. "호버"이름 선택 : 이름이 "hover"인 이벤트를 첨부하고 .trigger ( "hover")를 사용하여 실행하는 것은 불가능합니다. 문서는 이미이 이름을 "새 코드에 대해 강력히 권장하지 않습니다"라고 부르며, 공식적으로 1.8을 더 이상 사용하지 않고 결국 제거하고 싶습니다.
그들이 사용법을 제거한 이유는 is ( ": hover") 불분명하지만 아, 여전히 위와 같이 사용할 수 있으며 여기에 약간의 해킹이 여전히 있습니다.
(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);
아, 나는 타임 아웃 버전을 다시 언급하지 않을 것입니다. 이 방법 은 많은 복잡성을 초래하고 , 다른 방법이 없다면 나를 위해 믿습니다. 모든 경우의 95 % 에서 다른 방법이 있습니다 !
내가 몇 사람을 도울 수 있기를 바랍니다.
그 레츠 앤디