Tay*_*Mac 0 javascript jquery settimeout jquery-selectors jquery-events
嘿程序员,
我有一个基本的textarea:
<textarea id='text_comment'></div>
Run Code Online (Sandbox Code Playgroud)
我有这个功能:
$('#text_comment').live('keypress', function() {
setTimeout(function() {
string = $(this).val();
alert(string);
}, 500);
});
Run Code Online (Sandbox Code Playgroud)
它应该警告textarea中的值,但它不会发出任何警报.
我希望它在500ms后获得textarea的值,但是如果它在setTimeout函数内部,它似乎没有设置变量.
上下文成为window的,因为setTimeout是的方法window.
$('#text_comment').live('keypress', function() {
var el = this;
setTimeout(function() {
var string = $(el).val();
alert(string);
}, 500);
});
Run Code Online (Sandbox Code Playgroud)
如果你以这种方式保存对el的引用,你可以依赖它而不是 this
而且,你可以使用,el.value因为它不需要在jQuery中包装它并在内部完成相同的事情.val()