2010-04-21 63 views
0

我使用setTimeout函數來設置display: block;並附加到li,在鼠標懸停上。我只是想刪除塊,使其無法使用。jquery超時功能不能正常工作

我的功能工作正常,但問題是如果鼠標穿越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 2010-04-21 10:03:54

+0

@ 3gwebtrain:我編輯了你的答案,試圖提高英語水平,使其更具可讀性。我剛剛結束了'它自己的塊變得可見'這句話,你能否嘗試和重述這個,以便我們明白你的意思? – 2010-04-21 10:31:17

回答

0

您的代碼可能開始,如果你解決storedTimeoutID變量問題的工作。

嘗試將其存儲在$(this).data('storedtime')

如果問題仍然存在 - 這是你的邏輯。嘗試閱讀約​​,你會明白如何解決這些問題。