$(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()
。
答案 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函数,这可能更适合某些用例。 /强>
我希望这会有所帮助。