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



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

似乎.delay()不是识别鼠标悬停在本节后显示的最短时间的正确方法。

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

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

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

演示

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

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

这是一个有点烦人的问题。解决此问题的正确方法是使用"setTimeout",此处将更详细地解释。尝试向 jQuery AJAX 请求添加延迟

这可以很容易地根据您的需要进行修改。

编辑

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

最新更新