我有一些输入和一个按钮。我想实现允许删除最近聚焦/聚焦输出之一的功能。
我设置了onfocusout函数,它在按钮上设置了一个点击监听器。如果我专注于第一个输入然后从中聚焦并单击按钮 - 工作正常。但是,当我专注于第一个输入,然后在第二个并点击按钮 - 我得到deleteCell()函数执行n次我集中注意力。
如何让它只记住最后一次onfocusout事件?它似乎在点击按钮之前计算我的onfocusout事件。
谢谢。
var input = document.createElement("input");
input.setAttribute("onfocusout", "myFunction()");
function myFunction() {
document.getElementById("delete-cell").addEventListener("click", function () {
deleteCell();
});
}
function deleteCell() {
alert(1);
}
答案 0 :(得分:1)
尝试将on-focusout侦听器添加到相关的元素类,然后为元素focusout添加“to-delete”类(使用“this”属性)。但是,只有在首次从所有元素中删除它之后才添加此“删除”类。这应该让您拨入与最近焦点事件相关的元素。
$(".element-class").on("focusout", function() {
$(".element-class").removeClass("to-delete");
$(this).addClass("to-delete");
})
然后只需编写一个函数,该函数将删除带有“to-delete”类的元素,该类由点击事件触发。