在delay()之后调用focus()不会聚焦

时间:2014-08-13 10:27:53

标签: jquery

我已经创建了一个delay()的表单,如下所示:

$('form').delay(200).fadeIn().children('input').focus();

最后focus()不起作用,甚至抛出控制台错误。的为什么吗

P.S。我知道选择器不是问题,因为.children('input').addClass('monkey')工作正常。

2 个答案:

答案 0 :(得分:2)

显然,在delay结束之前,我无法专注于输入。以下内容使其按预期工作:

$('form').delay(200).fadeIn();
setTimeout(function(){
  $('form input').focus();
},200);

只需将setTimeout延迟大于或等于delay()

答案 1 :(得分:0)

Delay仅适用于效果,使用回调来设置焦点。

$('form').delay(200).fadeIn(function() {
    $(this).children('input').focus();
});

请参阅fiddle