我将 .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 请求添加延迟
这可以很容易地根据您的需要进行修改。
编辑
正如更好的答案所指出的那样,这对于动画不是必需的,我将把它留在这里,因为它与大多数非动画延迟相关。