鼠标离开后,jQuery显示隐藏延迟仍在运行

时间:2014-04-06 10:54:31

标签: javascript jquery

我设置.delay()以停止在每个鼠标上显示效果,但现在它显示在每个鼠标上只是延迟。

似乎.delay()不是识别鼠标的正确方法,在该部分之后显示的时间最短。

$(document).ready(function(){
    $('.article_wrapper').hover(
    function(){
        $(this).find('.actions').delay(800).show(300);
    },
    function(){
         $(this).find('.actions').hide(200);
    });

});

我可以使用哪些其他功能?

2 个答案:

答案 0 :(得分:5)

在jQuery 1.9+上,您可以使用finish()清除应用于特定队列的所有先前延迟: (虽然这仍未记录)

DEMO

更新: 确实,为了不破坏隐藏动画,您应该使用clearQueue()

$(document).ready(function(){
    $('.article_wrapper').hover(
    function(){
        $(this).find('.actions').delay(800).show(300);
    },
    function(){
        $(this).find('.actions').clearQueue().hide(200);
    });
});

答案 1 :(得分:0)

不幸的是,这是一个有点烦人的问题。解决这个问题的正确方法是使用" setTimeout",这里有更详细的解释。 Trying to add delay to jQuery AJAX request

可以根据您的需要轻松修改。

修改

正如更好的答案所指出的,这对于动画来说并不是必需的,我会把它留在这里,因为它与大多数非动画延迟有关。