我试图在更改类后500ms删除元素'this',但是它不起作用
$('.card').click(function() {
setTimeout(function(){
$(this).remove();
console.log('removed');
},500);
$(this).toggleClass("card card-used");
});
和HTML
<div class="card">asdasd</div>
我可以在控制台日志中看到“已删除”,但不是remove()
答案 0 :(得分:3)
要获得预期结果,请使用箭头功能从父范围(即card)继承 this ,因为setTimeout函数中的 this 指向窗口对象
请参考此链接以获取更多详细信息-Lexical Scope in JavaScript
$('.card').click(function() {
setTimeout(() => {
$(this).remove();
console.log('removed');
},500);
$(this).toggleClass("card card-used");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="card">asdasd</div>
答案 1 :(得分:1)
如上所述,this
属于click
上下文,无法在回调中访问。但是您可以将其存储到变量中并在回调中访问它。
$('.card').click(function() {
var self = this;
setTimeout(function(){
$(self).remove();
console.log('removed');
},500);
$(this).toggleClass("card card-used");
});