如何使用延迟 jQuery 函数而不是 setTimeout 在几秒钟后清除字段消息?下面的代码将立即清除值。
var $this = $(this),
mid = $this.find("#emid"),
contents = $this.find("#equestion");
if(contents.length<30){
contents.css('color','red')
.val('Error Message')
.delay(5000)
.val('');
}
Run Code Online (Sandbox Code Playgroud)
UPD:实际上,您可以简单地使用默认队列和自由链接效果(如show)和非效果(如val)。只需将后者包装在queue-dequeue调用中即可:
$("input")
.queue(function() { $(this).val("blah").dequeue() })
.delay(1000)
.queue(function() { $(this).val("").dequeue() })
.fadeOut(1000) // etc
Run Code Online (Sandbox Code Playgroud)
/UPD
不,您不必(实际上不应该)使用 setTimeout。jQuery 为此提供了一个很好的内置机制,称为队列。基本思想是这样的:您在命名队列中“收集”函数或延迟:
$(elem).queue("queueName", function(next) { do something and call next() });
$(elem).queue("queueName", function(next) { do something else and call next() });
$(elem).delay(3000, "queueName");
$(elem).queue("queueName", function(next) { do something else and call next() });
Run Code Online (Sandbox Code Playgroud)
然后调用dequeue()开始处理:
$(elem).dequeue("queueName")
Run Code Online (Sandbox Code Playgroud)
队列中的每个函数被依次调用,并按预期延迟工作。
实际应用: http: //jsfiddle.net/cA4jB/
| 归档时间: |
|
| 查看次数: |
1075 次 |
| 最近记录: |