回调函数中的setTimeout不起作用
setTimeout in a callback function not working
有人能在下面的代码中找到问题吗
$(document).ready(function () {
$("#leftsettingswindow").on("keyup", "#fontsize2", function () {
setTimeout(function () {
var txtVal = this.value;
$('#content').css("font-size", txtVal + "%");
}, 3000);
});
});
这是完美的,
$(document).ready(function () {
$("#leftsettingswindow").on("keyup", "#fontsize2", function () {
var txtVal = this.value;
$('#content').css("font-size", txtVal + "%");
});
});
任何想法?
this
不是一个局部变量,所以它没有保存在闭包中。您需要为它绑定一个局部变量:
$(document).ready(function () {
$("#leftsettingswindow").on("keyup", "#fontsize2", function () {
var savedThis = this;
setTimeout(function () {
var txtVal = savedThis.value;
$('#content').css("font-size", txtVal + "%");
}, 3000);
});
});
setTimeout
不在同一作用域中调用。所以this
不是第二个例子中的this
。
...
var self = this;
setTimeout(function () {
var txtVal = self.value;
$('#content').css("font-size", txtVal + "%");
}, 3000);
...
感谢Barmar在另一个帖子上回答了这个问题。
"this"不是一个局部变量,所以它不会保存在闭包中。您需要为它绑定一个局部变量:
$(document).ready(function () {
$("#leftsettingswindow").on("keyup", "#fontsize2", function () {
var savedThis = this;
setTimeout(function () {
var txtVal = savedThis.value;
$('#content').css("font-size", txtVal + "%");
}, 3000);
});
});
在代码片段中,值" 3秒后返回"undefined"
用selector代替这个
$(document).ready(function() {
$("#leftsettingswindow").on("keyup", "#fontsize2", function() {
setTimeout(function() {
var txtVal = $('#fontsize2').val();
$('#content').css("font-size", txtVal + "%");
}, 3000);
});
});
相关文章:
- setTimeout刷新,毫秒参数不起作用
- JavaFX+WebView/Javascript:setTimeOut不起作用调用堆栈来自Java
- 如何让Webworker真正响应,以及为什么setTimeout()不起作用
- Angularjs 更新 setTimeout 中的范围变量不起作用
- JavaScript setTimeout在IE上不起作用
- 而循环调用setTimeout不起作用
- 为什么javascript setTimeout不起作用,而setInterval对下面的程序起作用
- 为什么这个 setTimeout() 方法在这个函数中不起作用
- Javascript setTimeout 不起作用
- JavaScript setTimeout 不起作用
- Jquery setTimeout 不起作用(图像幻灯片)
- 如果我导航到另一个页面,setTimeout 不起作用
- 简单的setTimeout不起作用
- setTimeout不起作用,其他方法在for循环中排队
- Javascript setTimeout不起作用
- form.submit()方法中的setTimeout不起作用
- 回调函数中的setTimeout不起作用
- 在对window.open()使用setTimeout后,对window.close()使用setTimeout不起作用
- setTimeout()不起作用
- setTimeout不起作用