2013-07-10 107 views
2

我正在使用jQuery移動1.3.1面板。我有兩個面板(一個在左邊,一個在右邊),並打開我的面板有按鈕,同時刷卡事件。如果用戶不刷新頁面,一切正常。如果用戶刷新頁面,他可以在該頁面打開面板,但是當他點擊面板上的鏈接並路由到另一頁面時,他無法再打開面板(滑動或按下它們兩個都不起作用) 。但是,如果我再次刷新頁面,它將再次開始工作一次。順便說一下,我在jqm中使用ajax進行轉換。我找不到原因。我在使用面板時錯過了一些東西。這裏是html;jqm面板在刷新頁面後停止打開(編輯)

<div data-role="page"> 
    <div data-role="panel" id="left-panel" class="panel" data-display="push" data-position="left" data-theme="a" class="ui-response"> 
<div data-role="fieldcontain"> 
    <input type="search" name="password" id="search" value="" placeholder="search"/> 
</div> 
<a data-role="button" href="home">home</a> 

<a data-role="button" href="settings">settings</a> 
<button id="signOutButton">sign out</button> 
</div><!--Left Panel-->    <div data-role="panel" id="right-panel" class="panel" data-display="push" data-position="right" data-theme="a" class="ui-responsive"> 
</div><!--Right Panel--> 
     <div data-role="header" data-tap-toggle="false"> 
       <h1>header</h1> 
<button id="openLeftPanel">open</button> 
<button id="openRightPanel">open</button> 
     </div><!-- /header --> 

     <div data-role="content" 
      <p>this is home</p> 

     </div><!-- /content --> 
    </div><!-- /page --> 

這是我的js;

$(document).on('pageinit', function(){ 
//Opening panels with swipe, if any open don't open the panel (avoid closing swipe to open other panel) 
//Catch swipes 


     $(document).on('swipeleft swiperight', function(evt) { 
      if ($.mobile.activePage.jqmData('panel') !== 'open') { 
       if (evt.type === 'swipeleft' ) { 
        $('#right-panel').panel('open'); 
       } else if (evt.type === 'swiperight') { 
        $('#left-panel').panel('open'); 
       } 
      } 
     }); 


    $(document).on('click tap', function(evt){ 
     $.mobile.hidePageLoadingMsg(); 

     var target = evt.target; 
     var targetId = target.getAttribute('id'); 
     //Sign Out 
     if(targetId === 'signOutButton'){ 
      window.authFunctions.deleteCookie('apiKey'); 
      window.location.replace('/'); 
      evt.stopImmediatePropagation(); 
      evt.preventDefault(); 
     } 
     else if(targetId === 'openLeftPanel'){ 
      $('#left-panel').panel('open'); 
     } 
     else if(targetId === 'openRightPanel'){ 
      $('#right-panel').panel('open'); 
     } 

     }); 

對不起,如果代碼看起來不漂亮那是因爲我使用laravel的刀片在服務器端創建這些頁面。

在此先感謝。

編輯

當嘗試它,我承認;當它在開始不工作後點擊打開面板按鈕時,它會打開上一頁面板而不是活動頁面面板。我在瀏覽器中使用了上一頁按鈕,並看到它正在控制上一頁的面板。我該如何解決這個問題?

+0

刪除'pageinit'綁定。它發生一次,這就是爲什麼他們不再工作。 – Omar

+0

你能爲此做一個小提琴嗎? – krishgopinath

+0

謝謝你們,我解決了這個問題。發生這種情況是因爲之前的頁面在緩存中。我開始刪除以前的頁面。在頁面上隱藏。 這是我用來解決的代碼; ('pagehide',function(event,ui){var page = $(event.target); page.remove(); }); – bamya

回答

2
$(document).on('pagehide', function(event, ui){ 
    var page = $(event.target); 
     page.remove(); 
}); 

此代碼通過刪除將要隱藏的頁面來解決我的問題。

+0

我不知道爲什麼,但它也適用於我。謝謝 :) –