我想添加一种删除模式,用户可以通过按某个键来输入(我现在使用键“ 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
任何方式都对我有用。
答案 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', '**');
};
});