2013-04-09 36 views
1

我有一系列的一個文檔內頁,我從一個頁面導航到觸摸設備網頁利用刷卡的。jQuery Mobile的刷卡導航例外

什麼我不知道該怎麼辦,是有一次我達到一定的頁ID停止刷卡事件。

這是我使用形成我的導航代碼:

$('div.ui-page').live("swipeleft", function(){ 
var nextpage = $(this).next('div[data-role="page"]'); 
if (nextpage.length > 0) { 
$.mobile.changePage(nextpage, "slide", false, true); 
} 
}); 
$('div.ui-page').live("swiperight", function(){ 
var prevpage = $(this).prev('div[data-role="page"]'); 
if (prevpage.length > 0) { 
$.mobile.changePage(prevpage, {transition: "slide", 
reverse: true}, true, true); 
} 
}); 

我使用JQM 1.3

謝謝您的幫助

+0

什麼是你的問題?如果您顯示第一頁和最後一頁,您的代碼已經阻止您刷卡,那麼您還需要什麼? – Gajotres 2013-04-09 20:01:15

+0

對不起,我沒有讓自己清楚,發生什麼是我有一些隱藏的頁面被稱爲使用點擊事件。他們不應該在常規的滑動導航中看到,他們被放在文檔的底部,所以我需要一種方法來阻止以這種方式訪問​​這些頁面。 – user2109326 2013-04-09 20:08:18

+0

我想我明白你想要翻閱swiperight或swipeleft當你到達特定頁面時,我是否正確? – Gajotres 2013-04-09 20:10:02

回答

4

這裏有一個工作示例:http://jsfiddle.net/Gajotres/GXex5/

$(document).off('swipeleft').on('swipeleft', '[data-role="page"]', function(event){  
    if($(this).attr('id') == 'article2') { 
     event.preventDefault(); 
     return false; 
    } 
    var nextpage = $.mobile.activePage.next('[data-role="page"]'); 
    // swipe using id of next page if exists 
    if (nextpage.length > 0) { 
     $.mobile.changePage(nextpage, {transition: "slide", reverse: false}, true, true); 
    } 
    event.handled = true; 

}); 

$(document).off('swiperight').on('swiperight', '[data-role="page"]', function(event){ 
    var prevpage = $(this).prev('[data-role="page"]'); 
    if (prevpage.length > 0) { 
     $.mobile.changePage(prevpage, {transition: "slide", reverse: true}, true, true); 
    } 
    event.handled = true; 
}); 

基本上所有你需要的是這樣的代碼:

if($(this).attr('id') == 'article2') { 
    event.preventDefault(); 
    return false; 
} 

此代碼將檢查是否有些頁面有一定的名稱,如果是所以它會阻止默認操作(事件)。也不要忘記傳遞一個事件對象在你的代碼,所以

改變這一點:

$('div.ui-page').live("swiperight", function(){ 

這樣:

$('div.ui-page').live("swiperight", function(event){ 
+0

奇妙的例子。我已經在使用這個代碼。非常感謝你 – user2109326 2013-04-09 21:09:01

3

使用下面來定義下一個和以前的頁面ID ,如果它等於你不想展示的頁面,則什麼也不做。

var DoNothing = 'DoNothing'; 

// fetch ID of next page in DOM 
var nextpage = $.mobile.activePage.next('[data-role=page]')[0].id; 

// fetch ID of previous page in DOM 
var prevpage = $.mobile.activePage.prev('[data-role=page]')[0].id; 

// logic 
if(nextpage == DoNothing || prevpage == DoNothing) { 
// Do nothing! 
}