2010-04-21 34 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')

如果问题仍然存在 - 这是你的逻辑。尝试阅读约​​,你会明白如何解决这些问题。