jquery超时功能无法正常工作

时间:2010-04-21 09:47:18

标签: javascript jquery

我正在使用setTimeout功能设置display: block;并在鼠标悬停时附加到li。我只想删除该块并使其无效。

我的功能工作正常,但问题是如果鼠标穿过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();
});

1 个答案:

答案 0 :(得分:0)

如果使用storedTimeoutID变量解决问题,您的代码可能会开始工作。

尝试将其存储在$(this).data('storedtime')

如果问题仍然存在 - 这是你的逻辑。试着阅读throtting and debouncing,你就会明白如何解决这些问题。