2013-02-02 4 views
0

다른 DOM 요소 위로 마우스를 가져갈 때 div를 표시하려고하지만 div가 표시되기 전에 마우스를 움직이면이 동작을 취소하고 싶습니다. 지금까지 내가Jquery hover 취소 조치

HTML

<div id="msg"> 
    <a href="#" id="33"> HERE </a> 
</div> 

JS

var timer; 
$("body").on('mouseenter', '#msg a',function(){ 
    var userHover = $(this).attr("id"); 
    timer = setTimeout(function() { 
     alert(userHover); 
    }, 1000); 
}).on('mouseleave', '#msg a', function(){ 

}); 

http://jsfiddle.net/Nyrdz/

어떤 도움이 감사해야하는 것이다.

+1

시간 초과를 지우시겠습니까? 그 경우 clearTimeout (timer)가 트릭을해야합니다 ... –

+0

div가 팝업되기 전에 사용자가 'a'요소에서 마우스를 움직이면 div가 표시되지 않고 div가 표시되지 않습니다. 그것이 표시되는 것은 물론 다른 곳의 정보 상자입니다. 시간 제한을 지우면이 통화가 취소됩니까? 그냥 분명히 감사하고 싶다. – kabuto178

답변

3

당신은 clearTimeout()를 찾고 있습니다 :

var timer; 
$("body").on('mouseenter', '#msg a', function(){ 
    var userHover = $(this).attr("id"); 
    timer = setTimeout(function() { 
     alert(userHover); 
    }, 1000); 
}).on('mouseleave', '#msg a', function(){ 
    clearTimeout(timer); 
}); 

그러나, 경우에 당신은 당신이 요소 별 데이터의 timer 값을 저장하는 것이 좋습니다 높은 것 두 개 이상의 요소가 #msg a 일치해야합니다.

$("body").on('mouseenter', '#msg a', function(){ 
    var userHover = $(this).attr("id"); 
    $(this).data('timer', setTimeout(function() { 
     alert(userHover); 
    }, 1000)); 
}).on('mouseleave', '#msg a', function(){ 
    clearTimeout($(this).data('timer')); 
}); 
+0

네,'# msg' 안에 여러개의'a' 엘리먼트가 있습니다 – kabuto178

+0

고마워요. 내 현재 문제에 맞습니다 :) – kabuto178