2013-12-10 37 views
1

我有這樣的功能:如何刪除函數及其中的所有對象/處理程序?

var InitScrollbar = function() { 
... variables, object, handlers, ecc 
} 

和調整大小我想摧毀它和它裏面的所有變量/處理/對象。試着:

$(window).on("resize", function (e) { 
    InitScrollbar = null; 
    //InitScrollbar(); 
}); 

但它內部的處理程序,調整大小後,再次工作。 我怎樣才能銷燬所有?

+0

您需要手動刪除或禁用處理程序。 – SLaks

+0

我同意SLaks - 你可能把它連接到某個地方的事件上,並且不會因爲你一次將空引用設置爲null而被刪除。 –

+0

啊,只是再次讀你的問題。忽略我的答案,會在一秒鐘內重寫它 –

回答

1

你可以實現一個排序處置方法來調用,例如:

var InitScrollbar = function() { 
    // variables, object, handlers, ecc 
    this.Dispose = function(){ 
     //clear/detach all your handlers here 
    } 
} 

,然後使用這種方式:

$(window).on("resize", function (e) { 
    InitScrollbar.Dispose(); 
    //InitScrollbar(); 
}); 

編輯: 當你不實例化InitScrollbar ,你應該改變方法,試試這個:

var InitScrollbar = function() { 
    // variables, object, handlers, ecc 
} 

var DisposeScrollbar = function(){ 
    //clear/detach all your handlers here 
    //take care of correctly reference to InitScrollbar properties 
} 

然後以這種方式使用它:

$(window).on("resize", function (e) { 
    DisposeScrollbar(); 
}); 
+0

它說'InitScrollbar.Dispose不是一個函數' – markzzz

+0

你有沒有聲明它在我的例子?它是否在window.resize事件調用之前被聲明? – LittleSweetSeas

+0

是的,是的!我不知道... – markzzz

0

你將不得不手動刪除所有的處理程序。


什麼你可能做的是克隆不處理的元素和替換舊元素與新克隆的,但我不會告知方法。

相關問題