2010-04-02 2 views

답변

7

jQuery의 hover 메서드를 사용하여 추적 할 수 있습니다.

$(...).hover(
    function() { $.data(this, 'hover', true); }, 
    function() { $.data(this, 'hover', false); } 
).data('hover', false); 

if ($(something).data('hover')) 
    //Hovered! 
+0

스택에 너무 많은 이벤트를 발생시키지 않고 OP가 JQuery를 지정하지 않았기 때문에 요소에 하위 항목이 있으면 더 좋습니다. 또한 절대적으로 배치되고 서로 위에 겹쳐진 항목에는 작동하지 않으므로보다 정교한 논리가 필요합니다. – Plynx

+0

@Plynx : 네,하지만 jQuery 방식은 훨씬 쉽습니다. – SLaks

+0

이것은 좋은 해결책 인 것처럼 보이지만 다른 기능에서 데이터에 액세스하는 데 문제가 있습니다. . $ ("div.menu")은 가져가 ( \t 기능() { \t \t $ .DATA (이, '가져가')는 true. \t \t 경고 ($ ("DIV 번호의 MENU1") 데이터를 (' 호버 ')); // 디버그 \t}, \t 기능() { \t \t $ .DATA (이,'가져가 '거짓) \t \t 경고 ($ ("DIV 번호의 MENU1") 데이터 (. 'hover')); // 디버그 \t} ); 디버그 경고는 여기서 잘 작동하지만이 코드 블록 외부에서 수행하면 엉망이되어 결과적으로 'null'을 생성합니다. 왜 그런가? – Pieter

3

예, 다음과 같이 할 수 있습니다.

var hoveringOver = false; 

$("a#myLink").bind("mouseenter", function(){ 
hoveringOver = true; 
}); 

$("a#myLink").bind("mouseleave", function(){ 
hoveringOver = false; 
}); 

function isHoveringOver(){ 
return hoveringOver; 
} 
+0

요소가 자식 인 경우 올바르게 작동하지 않습니다. – SLaks

+2

@Slaks 사실이라면 jQuery 접근 방식이 더 좋다. –

+0

$ ('a # mylink')가 가장 좋습니다. – dmanexe

1

이이 작업을 수행하는 가장 좋은 방법이 될 것입니다 경우에 나는 아무 생각하지만 jQuery를 사용하는 경우 고전 JS에서

/* Returns true or false */ 
hoveringOver("a#mylink"); 
+2

요소에 자식이 있으면 올바르게 작동하지 않습니다. 'mouseenter'와'mouseleave'를 처리해야합니다. – SLaks

+0

@SLaks, 제안에 감사드립니다, 나는 그것을 고쳤다고 생각합니다! 나는 또한 매우 냉담한 질문에 대한 당신의 반응으로부터 무언가를 배웠습니다! – Jon

+0

여전히 올바르게 작동하지 않습니다. 'mouseover'와'mouseout'를 전혀 처리하지 말아야합니다. – SLaks

관련 문제