我有一个简单的jquery行,但它没有按预期工作。 我想完成以下任务:
以下是代码行:
$("#formsubmit").prop('disabled',true).delay(750).prop('disabled',false);
1和2完成,但3从未发生过 查看(非)工作example
谢谢
答案 0 :(得分:3)
jQuery的.delay()
函数通常用于排队效果,而不是操纵属性:
.delay()方法最适合延迟排队的jQuery效果。因为它是有限的 - 例如,它没有提供取消延迟的方法 - .delay()不能替代JavaScript的本机setTimeout函数,这可能更适合某些用例。
如果必须,您可以提供自定义队列,如下所示:
$("#formsubmit").click(function () {
$('.message').show();
var button = $(this);
button.prop("disabled", true).delay(750).queue(function (next) {
button.prop("disabled", false);
next();
});
});
span.message {
display: none;
}
<body>
<form id="form"> <span class="message">Some Message</span>
<input type="button" id="formsubmit" value="Submit" />
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</body>
或者,您只需使用原生setTimeout
功能。
答案 1 :(得分:1)
.delay()
无法在此方案中使用,而不是使用.delay()
使用setTimeout()
,如下所示: -
$("#formsubmit").click(function() {
$("#formsubmit").prop('disabled',true);
setTimeout(function(){$("#formsubmit").prop('disabled',false);},750)
});
修改: -
.delay()
只会延迟队列中的项目 动画
所以在这种情况下,而不是.dealy()
setTimeout()
将起作用。