清除消息jQuery延迟setTimeout

Cod*_*x73 2 javascript jquery

如何使用延迟 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)

geo*_*org 5

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)

http://jsfiddle.net/cA4jB/1/

/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/