2017-04-04 65 views
1

延时()是不工作的焦点()

$(document).ready(function() { 
 
    $(".cl").on("click", function() { 
 
    $(".inpt").delay(5000).focus(); 
 
    }); 
 
});
.cl { 
 
    background: #009; 
 
    width: 300px; 
 
    height: 100px; 
 
    line-height: 100px; 
 
    color: #fff; 
 
    text-align: center; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" class="inpt"> 
 
<div class="cl">click me</div>

问题我有与上面的代码是,delay()不工作在focus()

回答

4

的文档指出delay仅适用于动画(除非您设置了一个队列),你可能只是想要一个setTimeout的,而不是

$(document).ready(function() { 
    $(".cl").on("click", function() { 
     setTimeout(function() { 
      $(".inpt").focus(); 
     }, 5000); 
    }); 
}); 

为了完整起见,使用delay与队列

$('.inpt').delay(5000).queue(function (next) { 
    $(this).focus(); 
    next(); 
}); 
+0

谢谢,adeneo – sorvz

2

您可以尝试一种替代方案来实现此目的,

$(document).ready(function() { 
 
    $(".cl").on("click", function() { 
 
    setTimeout(function(){ 
 
    $(".inpt").focus(); 
 
    },5000); 
 
    }); 
 
});
.cl { 
 
    background:#009; 
 
    width:300px; 
 
    height:100px; 
 
    line-height:100px; 
 
    color:#fff; 
 
    text-align:center; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" class="inpt"> 
 
<div class="cl">click me</div>

的.delay()方法是最适合排队jQuery效果之间延迟。因为它是有限的,所以它不提供取消延迟的方法.delay()并不是JavaScript的本地函数setTimeout的替代品,这对于某些用例可能更合适。

我希望这会有所帮助。

+0

谢谢,它帮助:) – sorvz