2012-01-24 6 views
0

사용자가 jquery의 .hover() 또는 javascript의 mouseenter()를 사용하면 마우스가 요소를 입력 할 때뿐만 아니라 마우스가 요소 내에있는 요소를 교차 할 때도 이벤트가 트리거됩니다. 어떻게하면 요소가 이벤트에 영향을 미치지 않으면 서 요소가 마우스로 들어가거나 빠져 나올 때만 트리거되도록이 작업을 중지 할 수 있습니까?javascript hover issues

 $(document).ready(function(){ 
      introAnimation(); 

      $('#nav-item1').hover(function() { 
       $('#createSub').slideDown(300); 
      }); 
      $('#nav-item1').mouseout(function() { 
       $('#createSub').slideUp(300); 
      }); 

      $('#nav-item2').hover(function() { 
       $('#manageSub').slideDown(300); 
      }); 
      $('#nav-item2').mouseout(function() { 
       $('#manageSub').slideUp(300); 
      }); 
      $('#nav-item3').hover(function() { 
       $('#storeSub').slideDown(300); 
      }); 
      $('#nav-item3').mouseout(function() { 
       $('#storeSub').slideUp(300); 
      }); 
     }); 
+1

그건 사실이 아닙니다. 'mouseover()'만이 그렇게합니다. 예를 보여주십시오. – SLaks

+1

견본을 제공해 줄 수 있습니까? 이는 기본 동작이 아닙니다. 자식 요소는 부모 내에 있으므로 호버는 자식에 의해 영향을 받아서는 안됩니다. – Fresheyeball

+0

더 이상 설명하지 않았지만 여기에 예제 (왼쪽 탐색 모음)를 볼 수 있습니다 : http://developer.crawford.com/ –

답변

3

호버가 (unover)하는 방법이 있습니다. 중첩 된 자식 요소를 통해 때 당신에게 마우스를 해고 가져옵니다 mouseOut 이벤트에 대한 필요 :

$(document).ready(function(){ 
     introAnimation(); 

     $('#nav-item1').hover(function() { 
      $('#createSub').slideDown(300); 
     },function() { 
      $('#createSub').slideUp(300); 
     }); 
     $('#nav-item2').hover(function() { 
      $('#manageSub').slideDown(300); 
     },function() { 
      $('#manageSub').slideUp(300); 
     }); 
     $('#nav-item3').hover(function() { 
      $('#storeSub').slideDown(300); 
     },function() { 
      $('#storeSub').slideUp(300); 
     }); 
    }); 
+0

큰 제안, 나는 이것을 깨닫지도 못했습니다. –

0

핸들러 내에서이 추가

if(ev.target !== this){ return; } 

ev.target는 마우스 이벤트가 트리거 것입니다. this은 이벤트를 바운딩 한 것입니다.