2012-05-08 37 views
9

Nếu tôi đọc một cách chính xác các tài liệu về: http://jquerymobile.com/demos/1.1.0/docs/api/methods.htmljquery pageContainer di động phát

Sử dụng pageContainer và vai trò nên thay thế các nội dung của một trang vào trang hiện tại của tôi, ví dụ như thể nó là một mẫu nơi các header và footer được lưu giữ nhưng chỉ có nội dung được thay đổi.

Tôi đang cố gắng làm một ví dụ đơn giản để hiểu cách thức hoạt động nhưng tôi đang có một thời gian.

Đây là ví dụ siêu đơn giản của tôi.

<!DOCTYPE html> 
<html> 
    <head> 
    <title></title> 

    <link rel="stylesheet" href="static/css/jquery.mobile-1.1.0.min.css" type="text/css" /> 
    <script type="text/javascript" charset="utf-8" src="static/js/jquery-1.7.1.min.js"></script>   
    <script type="text/javascript" charset="utf-8" src="static/js/jquery.mobile-1.1.0.min.js"></script> 
    <script type="text/javascript"> 

    $(document).ready(function(){ 
     $.mobile.changePage('page2.html',{ 
      'pageContainer': $('#content_container'), 
      'role':'content' 
     }); 
    }); 

    </script> 
    </head> 
    <body > 
     <div data-role="page"> 
      <div data-theme="a" data-role="header"> 
       <div data-role="navbar" data-iconpos="top"> 
        My Header 
       </div> 
      </div> 
      <div id='content_container' data-role="content"> 
       <p>Page 1 </p> 
      </div> 
      <div data-theme="a" data-role="footer"> 
       My Footer 
      </div> 
     </div>     
    </body> 
</html> 

Và đây là trang 2

<html> 
    <body> 
     <div data-role="page"> 
      <p>Page 2</p> 
     </div> 
    </body> 
</html> 

Khi điều này tải, thay vì thay thế "Trang 1" cho "Trang 2" Tôi được chuyển hướng đến một trang trống mới. Bất kỳ con trỏ đến những gì tôi đang làm sai sẽ được đánh giá cao.

Trả lời

3

đây là một cách để thực hiện điều này thông qua API, không may sử dụng tải jquery của trực tiếp không giữ định dạng các yếu tố tuy nhiên, phương pháp này không.

$(document).bind('pageload',function(evt,data){ 
    $(document).unbind('pageload'); 
    $(data.page).fadeIn(); 
}); 
$.mobile.loadPage('page2.html',{'pageContainer':$('#content_container')}); 
+0

Tại sao tính năng này không hoạt động với 'changePage'? Tôi cần sử dụng một bộ sưu tập jQuery làm đối số đầu tiên. – Robin

+0

Tôi tin rằng vì pagechange là sự kiện được sử dụng cho changePage và pageLoad cho loadPage. Tôi không chắc chắn lý do tại sao tôi không thể chèn trang propperly với changePage nhưng điều này làm việc cho tôi. –

1

Bạn cần thêm phần tử data-role="content" vào trang thứ hai. Và tùy chọn pageContainer của phương thức changePage() có nghĩa là thay đổi vùng chứa cho tất cả các trang, không phải là vùng chứa cho một trang cụ thể (tôi chưa từng sử dụng tùy chọn này nhưng tôi tin đây là ý tưởng).

Nếu bạn thực hiện console.log($.mobile.pageContainer), bạn sẽ thấy rằng đó là phần tử body: http://jsfiddle.net/8T35d/.

Mục đích của tùy chọn này là cho phép bạn tạo giao diện người dùng liên tục không thay đổi khi bạn gọi phương thức changePage().

Nếu bạn đang tìm kiếm một tiêu đề dai dẳng/chân sau đó hãy xem tại trang này trong tài liệu: http://jquerymobile.com/demos/1.1.0/docs/toolbars/footer-persist-d.html

3

Bạn có một lỗi cú pháp trong id của bạn ở đây:

<div id='#content_container' data-role="content"> 

Thay đổi nó để (xoá băm):

<div id='content_container' data-role="content"> 

Và theo câu hỏi liên quan Open links in div container in JQuery Mobile, changePage() dường như không hoạt động để tải máy chủ tiếp theo vào một vùng chứa cụ thể trong trang. Nó muốn thay đổi toàn bộ trang.

này hoạt động:

$(document).ready(function(){ 
    $("#content_container").load("page2.html"); 
}); 
+0

Cảm ơn, ngoài tài liệu, bạn biết jquery di động dường như không có ý nghĩa nhiều như xa như những gì nó cung cấp .... có lẽ tốt hơn để dính vào jquery thường xuyên. –

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