2009-11-16 32 views
0

我正在使用Accordion插件內的Galleria插件以超酷的方式顯示圖像。但是,當我打開一個新標籤(在手風琴中)時,會出現一個問題,然後回到圖庫標籤。這導致拱廊被重新初始化,從而導致失敗。插件的jQuery解構器?

我想知道是否有辦法__deconstruct()插件,以便它可以在需要時重新初始化而不會造成問題?

$('.haccordion .header').click(function() 
{ 
    /* ---- Gallery Code ---- */ 
    if ($(this).find('div').attr('title') == 'photogallery') 
    { 
     $('.gallery').galleria(); 

如果我初始化上document.load插件(不檢查其標籤被打開),它加載的插件,但它是相當馬車。沒有圖像加載,不能點擊東西,等等... 如果我重新加載插件時div.photogallery它只是導致失敗。不加載。

所以我猜測唯一的方法來克服這個是以某種方式殺死插件然後重新初始化它?

+0

它似乎將第4行改爲if($(this).find('div')。attr('title')=='photogallery'&& $('。galleria_container')。length == 0)'訣竅。 – panas 2009-11-16 02:06:46

+0

是的,如果它的工作原理不是重新初始化插件,那將是重新初始化它的替代方案...... – Guffa 2009-11-16 10:44:20

回答

0

刪除插件的問題在於,插件不是作爲單個對象隔離的,您可以刪除它,它現在遍佈在代碼的某個部分,作爲附加到很多元素的事件和樣式,甚至可能還會增加額外的元素。

當您重新初始化插件時,它會覆蓋它自己對代碼的更改,導致重複衝突和其他問題。要重新插入插件,您必須在第一次初始化插件之前保存受影響內容的副本,以便在重新初始化插件之前將該部分代碼恢復到原始狀態。

但是,如果插件向窗口範圍添加了某些內容,則無法通過還原部分代碼來恢復該窗口範圍。要麼你必須找出插件的作用,以便你可以撤消它,否則你將不得不重新加載頁面。