2011-07-28 31 views
19

Giả sử tôi muốn chạy một số mã khi jQuery Mobile hoàn tất việc hiển thị giao diện người dùng. Sự kiện mobileinit không hoạt động vì đã tăng trước điều này xảy ra. Tìm kiếm nhanh trên Google dường như chỉ ra rằng chỉ cần sử dụng $(document).ready sẽ không hoạt động với JQM; nhưng tôi chỉ thử nó (gọi sau mobileinit) và nó làm việc cho tôi: mã của tôi chạy và các yếu tố cập nhật động, vv tốt. Vì vậy, tôi tự hỏi, có một số lý do tôi không nên được sử dụng nó (nó không đáng tin cậy hoặc messes lên JQM), hoặc là thông tin ra khỏi đó về nó không làm việc chỉ đơn giản là không chính xác? Tôi đang thiếu gì?

Cập nhật: Xem here để trình diễn.

+1

bạn đã kiểm tra http://stackoverflow.com/questions/5622581/jquery-mobile-document-ready-equivalent chưa? –

+0

@George: Có, và theo câu hỏi đó '$ (tài liệu) .ready' * không * hoạt động. Nhưng kỳ lạ, đối với tôi, nó có. Vì vậy, tôi đoán tôi chỉ cố gắng tìm ra nếu nó chỉ hoạt động ngay bây giờ, hoặc nếu có một số gotchas lạ khi đối phó với JQM mà tôi nên biết về. –

Trả lời

12

Rất có thể lý do bạn đọc $ (tài liệu) đã không hoạt động với jQuery Mobile là nó không kích hoạt mỗi khi bạn xem trang giả. Điều đó nói rằng, nó vẫn kích hoạt như nó nên khi các tài liệu html được nạp.

Nếu bạn muốn chạy mã kích hoạt mỗi khi bạn xem một giả trang web mà bạn có thể sử dụng mã này:

$('[data-role="page"]').live('pageshow', function() { 
    //run your code here 
}); 

LƯU Ý: có móc khác mà bạn có thể liên kết với cũng (pageshow, pagehide , pagebefoershow, pagebeforehide), tài liệu có thể được tìm thấy ở đây: http://jquerymobile.com/demos/1.0b1/docs/api/events.html

---------- EDIT ----------

tôi đã suy nghĩ về điều này và sự tương tự tốt nhất với $ (tài liệu) .ready() không ràng buộc với sự kiện "pageshow", nó sẽ ràng buộc với sự kiện "pagecreate". $ (document) .ready() kích hoạt một lần cho mỗi lần tải trang và "pagecreate" thực hiện tương tự cho các trang giả trong khi "pageshow" kích hoạt mỗi khi trang được hiển thị.

Vì vậy, nếu người dùng nhấp từ màn hình chính và sau đó nhấp vào nút quay lại để quay lại màn hình chính, "các trang" sẽ kích hoạt thứ hai (và tiếp theo) "hiển thị" màn hình chính.

Ngoài ra, "pageshow" yêu cầu người dùng điều hướng đến trang bị ràng buộc.

+0

Ah, tôi hiểu rồi; vì vậy ý ​​tưởng rằng nó "không hoạt động" là tất cả cùng dựa trên một sự hiểu lầm? Thật buồn cười; Tôi đã thấy các phương pháp thay thế này và nghĩ rằng chúng * ít hơn lý tưởng * vì chúng gây ra sự kiện kích hoạt trước mỗi trang giả được hiển thị thay vì chỉ một lần cho toàn bộ tài liệu (ví dụ: trang web di động jQuery). Trong khi sau này là chính xác những gì tôi muốn. –

+0

@jasper bạn đang liên kết đến sự kiện phiên bản alpha api, tốt nhất để sử dụng phiên bản beta –

+0

bắt tốt, thời gian để cập nhật thư mục dấu trang của tôi ... – Jasper

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