清除消息 jQuery 延迟设置超时
Clearing message jQuery delay setTimeout
如何使用
延迟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('');
}
UPD:实际上,您可以简单地使用默认队列并自由链接效果(如show
(和非效果(如val
(。只需将后者包装在queue
中 - dequeue
调用:
$("input")
.queue(function() { $(this).val("blah").dequeue() })
.delay(1000)
.queue(function() { $(this).val("").dequeue() })
.fadeOut(1000) // etc
http://jsfiddle.net/cA4jB/1/
/UPD
不,你不必(实际上也不应该(使用 setTimeout。 jQuery为此提供了一个很好的内置机制,称为queue。基本思想是这样的:在命名队列中"收集"函数或延迟:
$(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() });
然后调用dequeue()
开始处理:
$(elem).dequeue("queueName")
队列中的每个函数一个接一个地调用,延迟按预期工作。
在行动:http://jsfiddle.net/cA4jB/
jQuery文档明确提到
.delay(( 方法最适合在排队的 jQuery 之间延迟 影响。因为它是有限的——例如,它没有提供一种方法 取消延迟 - .delay(( 不是 JavaScript 原生的替代品 setTimeout 函数,可能更适合某些用途 例。
http://api.jquery.com/delay/
所以,最好使用 setTimeout 函数
https://developer.mozilla.org/en/DOM/window.setTimeout
这有点棘手,但你可以创建一个几乎什么都不做的动画,并有一个回调来清除值。
if(contents.length<30){
contents.css('color','red')
.val('Error Message').animate({
opacity: 1
}, 5000, function() {
contents.val('');
});
}
最好的方法仍然是使用 setTimeout
相关文章:
- 为什么页面重新加载会使设置超时无效,以及如何避免
- 立即设置超时
- iOS Safari Javascript设置超时问题
- 如何将嵌套设置超时转换为承诺
- 如何循环设置超时函数
- 关于设置超时/间隔上下文
- 清除设置超时之前的间隔将不起作用
- 在悬停功能中设置超时
- 延迟设置超时()
- 我们是否需要设置超时进行短轮询
- 更合乎逻辑的设置超时例程
- 应设置超时触发多少次
- 如何获得设置超时以从输入中读取值
- 尝试为函数和passvariable设置超时-dos'不起作用
- 清除超时多次设置超时
- Javascript设置超时和重定向-IE冻结
- 当一些文本粘贴到文本框中时(没有设置超时),是否检查数字
- 重置设置超时-javascript
- 间隔/设置超时起点
- 设置超时难度