2012-12-17 41 views
2

我正在使用jQuery UI Widget Factory來構建一個jQuery插件。推薦使用jQuery UI刪除事件的方法UI Widget Factory

我的插件結合自定義事件的窗口...

_subscribe: function() { 
    $(window).on("dragger.started", function() { ... }); 
} 

我想知道如何去消除這些事件,當插件的特定實例被破壞。如果我使用...

destroy: function() { 
    $(window).off("dragger.started"); 
} 

...那麼這會搞亂頁面上的插件的任何其他情況下,它會刪除所有「dragger.started」事件。

什麼是推薦的方式去摧毀只有那些與插件的實例相關的事件?

(提前)感謝您的幫助。

回答

2

您可以在事件中綁定多個名稱空間。因此,分配您的實例的ID喜歡

//this.id = 'dragger_' + guid_or_static_count 
$(window).on("dragger.started." + this.id, function() { ... }); 

後來

$(window).off('dragger.' + this.id); 

看到這個fiddle

0

你用什麼來擺脫實例?我相信,jQuery remove()將刪除綁定事件。

+0

感謝您的答覆。這是如果我想銷燬插件所做的更改,而無需從DOM中刪除原始元素 - 與jQuery UI插件的工作方式類似。例如$(「#myDiv」)。myPlugin(「destroy」); – user1031947

+0

像你想重置到原來的狀態,如在X/Y座標或一些這樣的?要做到這一點,我認爲你需要首先將原始狀態保存在某個地方,比如在一個JavaScript變量中,然後只需使用這些設置來設置屬性或屬性或者css或者當你想重置時你正在改變的任何東西,對? –

相關問題