2010-04-21 4 views
0

함수를 사용하여 display: block;을 설정하고 mouseover 할 때 li에 추가합니다. 블록을 제거하고 아무 것도하지 않길 바랄뿐입니다.jquery timeout 함수가 제대로 작동하지 않습니다.

내 기능은 제대로 작동하지만 마우스가 li을 교차하면 문제가 발생하여 블록이 보이기 시작합니다. 어떻게 이것을 피할 수 있습니까?

내 코드는 다음과 같습니다

var thisLi; 
var storedTimeoutID; 

$("ul.redwood-user li,ul.user-list li").live("mouseover", function(){ 
    thisLi = $(this); 

    var needShow = thisLi.children('a.copier-link'); 

    if($(needShow).is(':hidden')){ 
     storedTimeoutID = setTimeout(function(){ 
      $(thisLi).children('a.copier-link').appendTo(thisLi).show(); 
     },3000); 
    } 
    else { 
     storedTimeoutID = setTimeout(function(){ 
      $(thisLi).siblings().children('a.copier-link').appendTo(thisLi).show(); 
     },3000); 
    } 
}); 

$("ul.redwood-user li,ul.user-list li").live("mouseleave", function(){  
    clearTimeout(storedTimeoutID); 

    //$('ul.redwood-user li').children('a.copier-link').hide(); 
    $('ul.user-list li').children('a.copier-link').hide(); 
}); 
+0

나는 네가 무엇을 말하려고하는지 잘 모르겠다. 네가 준 코드는 정확히 네가하고 싶은 일을하고있는 것 같아. 조금 더 확장 할 수 있었습니까? – Nalum

+0

@ 3gwebtrain : 영어를 향상시키고 더 읽기 쉽게하기 위해 답을 편집했습니다. 방금 '문장이 보이기'라는 문장을 끝내는 데 어려움을 겪었습니다. 당신이 의미하는 바를 이해할 수 있도록이 문장을 다시 시도해 볼 수 있습니까? –

답변

0

코드는 당신은 storedTimeoutID 변수의 문제를 해결하는 경우 작업을 시작할 수 있습니다.

는 문제가 해결되지 않으면 $(this).data('storedtime')

에 저장하려고 - 그것은 당신의 논리입니다. throtting and debouncing에 대한 정보를 읽으면 이러한 문제를 해결하는 방법을 이해할 수 있습니다.

관련 문제