2012-04-02 53 views
9

Làm thế nào tôi có thể vô hiệu hóa di chuyển dọc nội dung trong jquery di động? Tôi muốn tắt tất cả di chuyển cho nội dung trang. Cảm ơn.jQuery di động nội dung trang dọc di chuyển dọc


Tôi tạo trang jquery.mobile và trong nội dung tôi thêm jquery.mobile.scrollview. Khi tôi sử dụng scrollview nội dung trang của tôi di chuyển trên và dưới. Làm cách nào để tắt nội dung cuộn? mã trang của tôi:

<div id="page2" data-role="page" align="center"> 
    <div data-role="content"> 
     <div id="mydatacontent" class="form"> 
      <div class="data-table-shadow" data-scroll="y" class="square single-block-view-v" style="height: 750px;"> 
       <table id="datatable" class="data-table"> 
        <tbody id="datatableContent"> 
         <!-- Table Data Here --> 
        </tbody> 
       </table> 
      </div> 
     </div> 
    </div> 
</div> 
+0

bạn muốn dừng cuộn ở cả hai hướng hoặc chỉ theo chiều dọc ... event.preventDefault sẽ giúp bạn ngăn cuộn – iDroid

Trả lời

13

Bạn có thể liên kết với các sự kiện touchmovereturn false để ngăn chặn hành vi mặc định của sự kiện touchmove:

$(document).delegate('.ui-content', 'touchmove', false);​ 

này nên vô hiệu hóa di chuyển trên tất cả các yếu tố data-role="content". Bạn có thể cập nhật bộ chọn .ui-content để cụ thể hơn nếu bạn chỉ muốn chức năng này trên/một số trang.

Đây là một bản demo bạn có thể thử trên thiết bị di động của bạn: http://jsfiddle.net/RKXLH/embedded/result/

+4

Chỉ muốn bạn biết rằng có một ký tự ẩn * khó chịu * ở cuối đoạn mã của bạn. Tôi sao chép/dán nó để chơi với và nó không hoạt động. Nhận ra điều này chỉ sau 15 phút đấu tranh. –

+0

@ JoãoCunha Thú vị, tôi không thấy gì cả. Có thể là sự khác biệt giữa bộ ký tự của trang và bộ ký tự bạn đang sử dụng trong ứng dụng trình soạn thảo của mình. – Jasper

+0

Có thể xác nhận, đã xảy ra với tôi trong phpstorm trên Windows. Xóa dòng và gõ lại nó theo cách thủ công đã sửa nó. –

14

Tôi tìm thấy câu trả lời ở trên để được hoạt động tốt. Tuy nhiên, điều này sẽ ngăn việc di chuyển trên các phần tử con của ".ui-content". tôi sử dụng

"scrollstart"

kiện thay thế và yếu tố con vẫn còn cuộn.

$(document).delegate(".ui-content", "scrollstart", false); 

Đã thử nghiệm trên webview của iOS6.

+1

Phương thức trên hoạt động. Nhưng làm thế nào để hoàn nguyên nó trở lại ?? tức là nếu sau khi ngừng di chuyển, một lần nữa nếu chúng tôi muốn bắt đầu cuộn, thì bạn nên làm gì? - Cảm ơn – Mak

+3

@Mak Sau đó, bạn nên xóa trình xử lý sự kiện được ủy quyền bằng cách sử dụng '.undelegate()': http://api.jquery.com/undelegate/. Nếu bạn sử dụng '.on()' thì bạn có thể sử dụng '.off()' để loại bỏ trình xử lý sự kiện. '.live()' có '.die()', nhưng bạn nên di chuyển ra khỏi '.live()' tại điểm này. – Jasper

+0

@Jasper đã làm điều tương tự ... nó đã hoạt động! – Mak

6

Theo kinh nghiệm của tôi bạn phải làm theo cách này:

var touchScroll = function(event) { 
    event.preventDefault(); 
}; 

$('element1').click(function() { 
    //this will disable the scroll 
    $(this).bind('touchmove', touchScroll); 

    $('element2').click(function() { 
     //this will enable scrolling 
     $(document).unbind('touchmove', touchScroll); 
    }); 
} 

element1 và element2 có thể bất cứ điều gì bạn muốn, và tất nhiên các chức năng nhấp chuột chỉ là ví dụ, bạn có thể chọn bất kỳ chức năng nào bạn muốn.

+0

nó hoạt động ... cảm ơn bạn rất nhiều .... Thiên Chúa chúc lành cho bạn .... –

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