jQuery事件多次触发

时间:2015-12-09 00:52:52

标签: javascript jquery html

我有一些"复杂"点击我无法弄清楚如何修复它的事件。 我在页面后面添加了一些元素的点击事件,因此我使用了.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");
    });
}

它出了什么问题?为什么它在事件呼叫中继续增加?

1 个答案:

答案 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