更改其类后删除此元素

时间:2019-08-29 20:18:33

标签: jquery html

我试图在更改类后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()

2 个答案:

答案 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");
 });