2013-04-11 5 views
0

동시에 트리거 될 때 다른 이벤트에서 이벤트를 바인딩 해제하는 방법을 알아낼 수 없습니다. 나는 이런 종류의 html 계층 구조를 가지고있다 :Jquery 동시 이벤트 관계

<div class="first"></div> 
<div class="second"></div> 

마우스가. first,. 초가 입력되면. 그런 다음 마우스를 .first로두면 마우스가 초를 입력하는 경우를 제외하고 .second가 숨겨집니다. 내 문제는 $ ('. first'). mouseleave() & $ ('. second'). mouseenter() 동시에 트리거됩니다. 나는 결과를 얻지 않고 이와 같은 것을 시도했다.

$('.first').mouseenter(function(){ 
    $('.second').show(); 
}); 

$('.first').mouseleave(function(){ 
    $('.second').hide(); 
}); 

$('.second').mouseenter(function(){ 
    $('.first').unbind('mouseleave'); 
}); 

$('.second').mouseleave(function(){ 
    $('.first').bind('mouseleave'); 
    $('.second').hide(); 
}); 

어떤 단서가 있나? http://jsfiddle.net/XdU7H/

+0

.first ..에 대한 마우스 센터가 없습니까? –

+0

[jsfiddle 예제] (http://jsfiddle.net)를 만듭니다. – Dom

+0

오른쪽, 게시물 수정 됨! – Joeyjoejoe

답변

1

시간 제한 : 다음

은 예입니다!

var hideTimer; 

$('.first').mouseenter(function(){ 
    $('.second').show(); 
}); 

$('.first').mouseleave(function(){ 
    hideTimer = setTimeout(function() { 
     $('.second').hide(); 
    }, 500); 
}); 

$('.second').mouseenter(function(){ 
    clearTimeout(hideTimer); 
    $('.first').unbind('mouseleave'); 
}); 

$('.second').mouseleave(function(){ 
    $('.first').bind('mouseleave'); 
    $('.second').hide(); 
}); 

논리를 핵심으로 따르는 지 잘 모르겠지만 필요에 따라 조정하십시오. : P

http://javascript.info/tutorial/events-and-timing-depth

+0

변경 사항이 거의 없습니다. 고마워,이 기사는 내가 원하는 것이 잘못되었다는 것을 이해하도록 도와 준다. – Joeyjoejoe