我有一些"复杂"点击我无法弄清楚如何修复它的事件。
我在页面后面添加了一些元素的点击事件,因此我使用了.on
。
我想要实现的是,当你点击.neuron时,你不应该能够点击另一个.neuron,或者你之前点击的那个.neuron。这就是我添加.off
函数的原因。
问题是,在打开/关闭神经元2-3次后,点击事件将触发2次,然后触发4次,然后触发8次,依此类推。我不明白为什么。
以下是jQuery的相关部分:
$("#nn_container").on("click", ".neuron", zoom_neuron);
function zoom_neuron() {
$("#nn_container").off("click", ".neuron", zoom_neuron);
console.log("off");
/* do some stuff */
$("#close_neuron").click(function() {
/* do some stuff */
$("#nn_container").on("click", ".neuron", zoom_neuron);
console.log("on");
});
}
它出了什么问题?为什么它在事件呼叫中继续增加?
答案 0 :(得分:1)
$("#nn_container").on("click", ".neuron", zoom_neuron);
function zoom_neuron() {
$("#nn_container").off("click", ".neuron", zoom_neuron);
console.log("off");
/* do some stuff */
$("#close_neuron").off('click').on('click', (function() {
/* do some stuff */
$("#nn_container").on("click", ".neuron", zoom_neuron);
console.log("on");
});
}
这将确保#close_neuron
一次只有一个绑定点击事件。这假设代码中没有其他位置将点击事件绑定到#close_neuron
。