2011-11-15 33 views
6

CẬP NHẬT: Tôi đã có thể làm cho trình cuộn của mình hoạt động như mong muốn nhưng tôi cảm thấy mình đã hack xung quanh vấn đề thực sự và sẽ thích nó nếu có ai có câu trả lời chắc chắn hơn, tôi đã cập nhật và lưu ý trong các đoạn bên dưới jQuery mới tôi đang sử dụng.iscroll scrollToElement không cập nhật biến currPage

Tôi đang sử dụng iScroll-4 (http://cubiq.org/iscroll-4) cho một/ứng dụng web Android iPad, mọi thứ đều làm việc một cách hoàn hảo với các thao tác vuốt và cuộn nhưng tôi có một bảng nội dung ở phần đầu của ứng dụng cho phép người dùng chuyển sang các khu vực cụ thể của máy cuộn -

Tôi đang sử dụng chức năng iScroll scrollToElement(element, duration) để chuyển sang các khu vực khác nhau. Cũng sử dụng scrollToPage(page, duration) để cho phép người dùng điều hướng theo cách thủ công về phía trước và phía sau một trang cùng một lúc.

Trong khi xem giao diện điều khiển ghi lại currPageX cập nhật biến khi tôi di chuyển với scrollToPage chức năng và khi tôi vuốt, nhưng khi sử dụng biến scrollToElement các currPageX không cập nhật.

Vì vậy, nếu tôi chuyển đến một phần tử và sau đó điều hướng về phía trước với scrollToPage('next', 0) nó sẽ quay lại và điều hướng tôi đến trang tiếp theo sau mục lục.

Tôi đã thử sử dụng chức năng scroll.refresh() sau scrollToElement, trước đây, đặt chức năng trong thời gian chờ, v.v. và tôi không thể tìm ra lý do tại sao số currPageX không cập nhật.

Dưới đây là một đoạn mã jQuery mà tôi đang sử dụng hai chức năng khác nhau:

// 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

Tôi đang sử dụng phiên bản 5 của iScroll và có cùng một vấn đề. Cách tôi giải quyết bằng cách viết ** 'tehScroll.currentPage.pageY' ** thay vì **' tehScroll.currPageX' ** Ngoài ra, mục đích của ** return false' ** là gì đáy? –

+0

'return false' sẽ dừng hành động mặc định của phần tử được nhấp, do đó, đối với thẻ' a' sẽ điều hướng đến 'href', trong trường hợp này, bởi vì trình xử lý nhấp chuột nằm trên một' span', nó không chính xác gì;) – andyface

Trả lời

0

Bạn có xem xét sử dụng jquery-mobile-iscrollview phụ tùng plug-in? - có một chức năng scrollToPage (Trang X, Y, thời gian), hoạt động tốt đối với tôi ...

tốt nhất

M

Các vấn đề liên quan