2014-10-09 18 views
1

如何將destroy方法添加到Snap.js移動面板?如果只是簡單地刪除它設置的數據/引用,那麼最好的方法是什麼?將'destroy'方法添加到Snap.js移動面板插件

https://rawgit.com/jakiestfu/Snap.js/v2.0.0-rc1/src/snap.js

基本上,我需要能夠重新初始化它jQuery Mobile page change之前將其關閉 - 否則只會在第一頁上工作:

http://jsfiddle.net/frank_o/L3dkmkrx/1/

+0

你是否願意完全卸下面板,然後注入和動態初始化呢? – Omar 2014-10-09 22:16:30

+0

我不知道。這聽起來不太乾淨 - 儘管我想我現在願意嘗試任何事情。 – 2014-10-09 22:29:07

+0

問候!你有什麼機會告訴我如何? – 2014-10-10 12:43:38

回答

2

下面的代碼克隆快面板,將其放置在當前頁面之後,然後將其初始化爲它在pagecontainershow上。

$(document).on("pagecontainershow", function (e, data) { 

    var drawer = $(".snap-drawers").clone(); /* clone */ 
    $(".snap-drawers").remove();    /* remove */ 
    $(data.toPage).before(drawer);   /* place it before page */ 
    var snapper = new Snap({     
     element: $(data.toPage)[0]   /* initialize it */ 
    }); 

    $('.open-panel')       
     .off("click")      /* remove previous click listener */  
     .on("click", function() {   /* re-bind click */ 
     snapper.open('left'); 
    }); 

    $('.close')        
     .off("click")      /* remove previous click listener */ 
     .on('click', function() {   /* re-bind click */ 
     snapper.close(); 
    }); 
}); 

Demo - Code

+0

真的很不錯,但是爲什麼'snap.js:390'與'Uncaught TypeError:無法讀取屬性'style'的null'有關呢? http://jsfiddle.net/frank_o/L3dkmkrx/2/ – 2014-10-10 18:58:26

+1

@MarkBoulder它在jsfiddle上發生故障。我將在jsbin上發佈演示。 – Omar 2014-10-10 19:45:12

+1

@MarkBoulder我用一個工作示例更新了我的答案。 – Omar 2014-10-10 20:18:34