2012-03-08 109 views
1

我試圖阻止jquery mobile中的頁面更改,具體取決於用戶當前處於什麼頁面,但我不知道data.options對象中的內容。所以基本上我需要說,如果用戶要去index.html和調用頁面是example.html,然後防止默認。jquery mobile根據調用頁面阻止頁面更改

$(document).bind("pagebeforeload", function (event, data) { 
    var toPage = data.toPage; 
    if (toPage == 'undefined') { 
    return; 
    } else { 
    //need additional condition to see current page in the data.objections object? 
    if (toPage == '/android_asset/www/index.html'); 
    event.preventdefault(); 
    } 
}); 

回答

15

您實際上想要使用pagebeforechange事件。

$(document).bind('pagebeforechange', function(e, data) { 
    var to = data.toPage, 
     from = data.options.fromPage; 

    if (typeof to === 'string') { 
     var u = $.mobile.path.parseUrl(to); 
     to = u.hash || '#' + u.pathname.substring(1); 
     if (from) from = '#' + from.attr('id'); 

     if (from === '#page1' && to === '#page3') { 
      alert('Cannot change to page 3 from page 1'); 
      e.preventDefault(); 

      // remove active class on button 
      // otherwise button would remain highlighted 
      $.mobile.activePage 
       .find('.ui-btn-active') 
       .removeClass('ui-btn-active'); 
     }    
    } 
}); 

我已經在這裏創造一個樣品http://jsfiddle.net/kiliman/zMnUM/

+0

注意,在JQM 1.3.2(在Chrome上運行桌面),數據參數的.toPage屬性不是一個URL,但一個對象,並且名稱的頁面是在data.toPage ['0']找到id – Wytze 2013-09-19 15:15:50

+0

我認爲這是第一次調用的URL和第二次調用的對象。每次導航都會調用此事件兩次。 – 2015-11-19 14:48:46