2012-08-06 56 views
2

現在我的DOM有三個div與data-roll="page",他們都有唯一的ID。如果我使用下面的代碼,它可以工作,但jQuery Mobile正在創建一個新節點,而不是切換到已經存在的節點。jQuery Mobile切換到「頁面」,即已與dom .changePage()

$('div.ui-page').live("swipeleft", function(){ 
    var nextpage = $(this).next('div[data-role="page"]'); 
    // swipe using id of next page if exists 
    if (nextpage.length > 0) { 
     console.log(nextpage); 
     $.mobile.changePage(nextpage.attr('id'), {transition: 'slide'}); 
    } 
}); 

我也試圖通過剛剛下一頁到.chagePage方法,但是當過的網頁有一個id集我碰到下面的錯誤。

TypeError: b.split is not a function 

所以我希望直接切換到DOM中已經存在的「頁」,多數民衆贊成,而不是創建從我swipeleft處理一個新的。

我使用jQuery 1.7.1和jQuery移動1.1.1

回答

2

你試過路過,在一個jQuery對象,而不是一個字符串?

$(document).delegate('.ui-page', "swipeleft", function(){ 
    var $nextPage = $(this).next('[data-role="page"]'); 
    // swipe using id of next page if exists 
    if ($nextPage.length > 0) { 
     $.mobile.changePage($nextPage, { transition: 'slide' }); 
    } 
}).delegate('.ui-page', "swiperight", function(){ 
    var $prevPage = $(this).prev('[data-role="page"]'); 
    // swipe using id of next page if exists 
    if ($prevPage .length > 0) { 
     $.mobile.changePage($prevPage, { transition: 'slide', reverse : true }); 
    } 
});​ 

這裏是一個演示:http://jsfiddle.net/V3CXF/

否則,我認爲你必須在前面加上一個哈希標記您的字符串ID,使之成爲有效的選擇:

$(document).delegate('.ui-page', "swipeleft", function(){ 
    var $nextPage = $(this).next('[data-role="page"]'); 
    // swipe using id of next page if exists 
    if ($nextPage.length > 0) { 
     $.mobile.changePage('#' + $nextPage[0].id, { transition: 'slide' }); 
    } 
}).delegate('.ui-page', "swiperight", function(){ 
    var $prevPage = $(this).prev('[data-role="page"]'); 
    // swipe using id of next page if exists 
    if ($prevPage .length > 0) { 
     $.mobile.changePage('#' + $prevPage[0].id, { transition: 'slide', reverse : true }); 
    } 
});​ 

這裏是一個演示: http://jsfiddle.net/V3CXF/1/

注意我將.live()換出.delegate(),因爲.live現已折舊(作爲jQuery Core 1.7)。如果您使用的是jQuery Core 1.7或更新的版本,則可以使用.on()

文檔爲.live()http://api.jquery.com/live

+0

我試圖傳遞對象給它,並試圖用你的前綴#的id sugjestion。這兩個都導致了螢火蟲的這個錯誤。 TypeError:b.split不是函數 – hcker2000 2012-08-06 17:48:02

+0

@ hcker2000我添加了演示來顯示我的代碼工作。看到這裏:http://jsfiddle.net/V3CXF/ – Jasper 2012-08-06 19:03:42

+0

謝謝我不知道這是否是一個錯誤,但由於某種原因,如果你使用一個數字作爲id它無法正常工作。它必須有一些文本才能正常工作。我也重新調整了js小提琴以適應1.7 +的.on方法,它將與jquery對象而不是id一起工作。 http://jsfiddle.net/qGJpt/7/ – hcker2000 2012-08-06 19:36:10