我有一个脚本,我点击它后按下按钮5秒钟,然后再次启用它。
$(document).on('click', 'button', function () {
var htmls = $(this).html();
$(this).prop("disabled", true);
setTimeout(function () {
$(this).prop("disabled", false);
$(this).html(htmls);
}, 5000);
$(this).html('<img src="<?=CDN(' / icons / loading / loading5.gif ')?>" />');
});
不知何故setTimeout
不会结束,因此按钮不会再次启用。我没有收到任何错误消息。
答案 0 :(得分:4)
在$(this)
调用之前将setTimeout
保存到变量中,因为this
处理程序中的setTimeout
关键字引用window
对象:
$(document).on("click", "button", function() {
var $this = $(this),
htmls = $this.html();
$this.prop("disabled", true)
.html('<img src="..." />');
setTimeout(function() {
$this.prop("disabled", false)
.html(htmls);
}, 5000);
});
答案 1 :(得分:2)
这里没有引用DOM元素。试着放入另一个temarory变量。因为它在
setTimeOut
之外
var $this = $(this),
htmls = $this.html();
$this.prop("disabled", true);
setTimeout(function() {
$this.prop("disabled", false).html(htmls);
}, 5000);