2011-11-15 102 views
6

更新: 我能夠讓我的滾動工作正常,但我覺得我已經繞過實際問題,並會喜歡它,如果任何人有一個更穩定的答案,我已經更新並在我正在使用的新jQuery下面的代碼片段中註明。iscroll scrollToElement沒有更新currPage變量

我爲iPad/Android網絡應用程序使用iScroll-4(http://cubiq.org/iscroll-4),一切工作都完美地與滑動和滾動,但我有一個目錄在應用程序的開始,允許用戶跳轉到滾動條的特定區域 -

我使用iScroll函數scrollToElement(element, duration)以跳轉到不同的區域。同時使用scrollToPage(page, duration)允許用戶每次手動向前和向後導航一頁。

一邊看控制檯日誌的currPageX變量更新,當我與scrollToPage功能,當我輕掃瀏覽,但使用scrollToElementcurrPageX變量時不更新。

因此,如果我跳轉到某個元素,然後使用scrollToPage('next', 0)向前導航,它將向後移動並導航到內容列表後面的下一頁。

我試過在scrollToElement之後使用scroll.refresh()函數,把函數放入超時等等,我不知道爲什麼currPageX沒有更新。

下面是我使用的是兩種不同的功能jQuery的代碼片段:

// TO NAVIGATE FORWARD AND BACKWARDS 
    $('span.control').on('click', function() { 
    var slideDir = $(this).attr('data-dir'); 
    if (slideDir == 'prev') { 
     var tehPg = tehScroll.currPageX-1; 
    } else if (slideDir == 'next') { 
     var tehPg = tehScroll.currPageX+1; 
    } 
    tehScroll.scrollToPage(tehPg, 0); 
    return false; 
    }); 

    // TO JUMP FROM CONTENTS 
    $('li[data-page="toc"] span').on('click', function() { 
    var toPage = $(this).attr('data-page'); 
    tehScroll.scrollToElement('li[data-page="'+toPage+'"]', 800); 
    // ADDED THE FOLLOWING LINE TO MANUALLY SET currPageX after scrolling! 
    tehScroll.currPageX = $('#slides li[data-page="'+toPage+'"]').index(); 
    return false; 
    }); 
+1

我使用iScroll第5版和有同樣的問題。我解決它的方式是通過編寫 **'tehScroll.currentPage.pageY' ** 而不是 **'tehScroll.currPageX' ** 此外,該**的返回false **的目的是什麼底端? –

+0

'return false'會停止被點擊元素的默認動作,所以對於一個'a'標籤可以導航到'href',然而,在這種情況下,因爲點擊處理器是在'span'上的,確實沒有什麼;) – andyface

回答

0

你有沒有考慮使用jquery-mobile-iscrollview Widget插件? - 有一個函數scrollToPage(pageX屬性,pageY,時間),很適合我......

最好

中號