Delay()无法处理焦点()

时间:2017-04-04 10:19:59

标签: javascript jquery

$(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()

2 个答案:

答案 0 :(得分: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(); 
});

答案 1 :(得分: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函数,这可能更适合某些用例。 /强>

我希望这会有所帮助。