我有这个 showMessage 功能:
函数显示消息(消息){ $('#my_message').show(); $('#my_message').html(message); setTimeout(function(){$('#my_message').fadeOut();}, 2000); }
但是如果在 setTimeout() 和/或 fadeOut() 完成之前再次调用它,它就不能正常工作。IE。它不会重新开始并等待 2 秒 - 正如您可以想象的那样,它有点口吃。如何清除 setTimeout 和 fadeOut 使其按预期工作?
编辑:
建议使用 jQuery delay() 而不是 setTimeout()。但我认为 delay() 不能正常工作(在 jQuery delay() 文档页面上它说 delay() 不能被取消)。这是我更新的代码:
$(文档).ready(函数() { $('#my_form').submit(function() { $('#my_message').stop(); $('#my_message').hide(); $.get('/my_url', $('#my_form').serialize(), 功能(数据){ 显示消息(数据); }); 返回假; }); }); 函数显示消息(消息){ $('#my_message').html(message); $('#my_message').show(); $('#my_message').delay(5000).fadeOut(); }
因此消息将显示 5 秒钟然后淡出。问题是延迟永远不会被取消。例如,如果我提交一次表单并让消息显示,然后等待 4 秒并再次提交,那么第一个延迟仍然存在,因此第二个延迟看起来像 1 秒。那么即使延迟中断,我怎样才能使延迟始终为 5 秒。我尝试使用stop(true)
,stop('fx', true)
但似乎都没有任何效果。