这个jQuery隐藏和显示代码中的off方法有什么用?

时间:2014-05-06 20:11:40

标签: jquery event-handling

我正在使用此答案中的代码 https://stackoverflow.com/a/18055789/3250077用于项目。

在第12行的这个小提琴http://jsfiddle.net/UpuDU/中有一个off方法

faqTab.off('click').on('click', function()

我是编程的新手,我读到它删除了事件处理程序,但当我删除代码的那部分时,就像这样

faqTab.on('click', function()

似乎没有任何改变。代码中发生了什么?这真的是必要的还是只是一个好的做法"。不使用它会导致更复杂的代码出现问题吗?

1 个答案:

答案 0 :(得分:0)

如果在添加新处理程序之前未删除事件处理程序,则最终可能会为同一事件多次调用相同的方法。因此,这是否有所作为的答案实际上取决于此代码运行的频率。作为一般规则,在添加新处理程序之前删除现有处理程序并不是一种不好的做法。

采用以下示例。在此示例中,如果直接或间接从单击的按钮调用此单击函数,则会出现问题:

var clickFunction = function () {
    // add the event AGAIN: BAD!
    $("#test-button").on("click", clickFunction);
};

在JSFiddle中看到这一点: http://jsfiddle.net/4Qv8T/1/