2013-12-11 7 views
3

jquery로 mouseenter와 mouseleave에 문제가 있습니다.Mouseenter가 아직 완료되지 않은 경우 Mouseleave가 실행되지 않습니다.

div를 입력하면 mouseenter 함수가 시작됩니다. mouseenter가 완료되기 전에 div를 종료하면 mouseleave가 트리거되지 않습니다.

나는 이해하기 쉽게 jsfiddle를 만들었습니다.

http://jsfiddle.net/8sLLD/1/

코드 : 버튼 입력시

$("#menu1").mouseenter(function() { 
    //code 

}) 
    $("#image").mouseleave(function() { 
    //code 
}); 

그래서, 화상이 나타난다. 이미지가 나타나기 전에 (커서가 이미지에 닿기 전에) 버튼을 벗어나면 mouseleave가 트리거되지 않습니다.

편집 : # mouseleave에 #menu를 사용하면 마우스를 "움직이는"경우 이미지가 매우 이상하게 작동합니다.

나는 이미 이와 같은 질문이 있지만 그 중 누구도 나를 위해 일하지 않았다는 것을 알고 있습니다. 영어

+0

이의하는 MouseLeave 이벤트가 이미지에 바인딩되지 않습니다, 당신은 무엇을 기대 했는가? – adeneo

+0

"이미지가 나타나기 전에 (커서가 이미지에 닿기 전에) 버튼을 벗어나면 마우스가 움직이지 않습니다." 왜해야합니까? ** 관련 ** jsfiddle을 게시 할 수 있습니까? –

+0

그러나 div에 mouseleave 이벤트를 바인딩하면 이미지 위로 마우스를 가져 가면 트리거됩니다. 내가 어떻게 고칠 수 있니? (실제로 제 질문입니다.) @Wolff 이미지가 그대로 남아 있기 때문에 마우스를 놓아 두어야합니다. – colin

답변

2

당신은 당신과 핸들러 함수에서 설정하는 hover 이벤트 핸들러를 사용할 수 있습니다 제에 대한

고마워요 미안.

#p2과 같은 배치 요소에 마우스를 올려 놓으면 더 간단합니다. 따라서 래퍼를 입력/종료 할 때 해고 될 것이므로 더 이상 아이들이 아닙니다.

코드 :

$('document').ready(function() { 
    $("#p2").hover(function() { 
     $(this).css("cursor", "pointer") 

     $("#image").css("left", "75"); 
     $("#image").stop().animate({ 
      width: "145px", 
      height: "145px", 
      left: "0" 
     }, 'slow'); 

     $("#c").animate({ 
      top: "100" 
     }, 'slow'); 

    }, function() { 
     $("#image").stop().animate({ 
      width: "0%", 
      height: "0%", 
      left: "75" 
     }, 'slow'); 
     $("#c").animate({ 
      top: "0" 
     }, 'slow'); 
    }); 
}); 

데모 : http://jsfiddle.net/qwPvv/ 물론

+0

도움을 주셔서 감사합니다. 이것은 나를 위해 문제를 해결했다. 다른 사람들에게도 도움이되기를 바랍니다. :) – colin

+0

@ 콜린 기꺼이 도와 줘요! –

관련 문제