单击并按下键时,使用remove()删除元素

时间:2018-07-10 14:20:41

标签: javascript jquery html

我想添加一种删除模式,用户可以通过按某个键来输入(我现在使用键“ enter”输入。例如,== 13检查是否在下面的示例中输入了被按下的键)

var checker = 1;
$(document).keypress(function (e) {

    if (e.which == 13 && checker == 1) {
        checker = 2;
        alert("entered delete mode");
        $(".element1").click(function (e) {
            $(this).remove();
        });
    }
    else if (e.which == 13 && checker == 2) {
        checker = 1;
        alert("exited delete mode");

        $(".element1").each(function (i, e) {
            $(this).off("click", "**");
        });
    };

});

因此,基本上,当用户按下Enter时,我检查我们是否已经处于删除模式,如果不是(检查器== 1),则输入它,然后在click()上为类“ .element1”的对象添加一个函数< / p>

如果用户未处于删除模式(checker == 2),则尝试删除click方法。

但是由于某些原因,这部分无效。

谢谢大家。

编辑

我还尝试将.click添加到.element类中:(在我看来,当我将鼠标悬停并按Enter时,它应该删除了该元素)

     $(.element1)
     .hover(function (e) {
                                    var deletable = $(this);
                                    $(document).keypress(function (e) {
                                        if (e.which == 13) {
                                            deletable.remove();
                                        }
                                    });
                                });

但是每当我按Enter时,它只会删除所有.elements

任何方式都对我有用。

2 个答案:

答案 0 :(得分:2)

.off()上不能有第二个参数。固定代码:

var checker = 1;
$(document).keypress(function (e) {

    if (e.which == 13 && checker == 1) {
        checker = 2;
        alert("entered delete mode");
        $(".element1").click(function (e) {
            $(this).remove();
        });
    }
    else if (e.which == 13 && checker == 2) {
        checker = 1;
        alert("exited delete mode");

        $(".element1").off("click");
    };

});

我也摆脱了第二个.each(),正如评论中所建议的(没有必要)。

答案 1 :(得分:0)

尝试像这样使用on / off而不删除元素:

var checker = 1;
$(document).keypress(function (e) {

    if (e.which == 13 && checker == 1) {
        checker = 2;
        alert("entered delete mode");
        $(".element1").on('click', function (e) {
            // handle click
        });
    }
    else if (e.which == 13 && checker == 2) {
        checker = 1;
        alert("exited delete mode");

        $(".element1").off('click', '**');
    };

});