bạn sẽ liên kết với một "sự kiện trang" mà jQuery Mobile cho thấy, giống như pageinit
:
$(document).delegate('#my-page', 'pageinit', function() {
//this is like document.ready for this pseudo-page
});
Vì bạn đang sử dụng jQuery Lõi 1.7.1 bạn có thể sử dụng .on()
trong đó có một cú pháp hơi khác nhau:
$(document).on('pageinit', '#my-page', function() {
//this is like document.ready for this pseudo-page
});
Cả ba phương pháp của bạn làm những điều tương tự. .live()
giống với việc sử dụng .delegate()
với số document
làm lựa chọn gốc nhưng nó đã bị khấu hao do đó, nên ngừng sử dụng nó (nguồn: http://api.jquery.com/on). Sử dụng .bind()
trực tiếp trên phần tử document
giống như sử dụng .delegate()
nhưng khi bạn sử dụng .bind()
, bạn phải xác định trang giả nào có sự kiện được kích hoạt trên trình xử lý sự kiện thay vì trong cuộc gọi hàm.
Ví dụ:
$(document).bind('pageshow', function() {
var id = $.mobile.activePage[0].id;
//you can use $.mobile.activePage to do work on the current page
});
Nói chung, đoàn sự kiện được sử dụng khi chúng ta không biết khi nào một phần tử sẽ tồn tại trong DOM. Nó dựa trên các sự kiện tạo bọt cho DOM cho đến khi chúng đến được lựa chọn gốc (trong trường hợp của bạn nó luôn là phần tử document
).
Documents cho .delegate()
: http://api.jquery.com/delegate
Để biết thông tin tổng quát hơn về sự khác biệt giữa các chức năng này, xem bài viết này (Tôi đã đọc nó để kiểm tra nó cho chính xác và đó là quyền-on): http://www.elijahmanor.com/2012/02/differences-between-jquery-bind-vs-live.html
Cảm ơn các tài nguyên. Điều đó thật tuyệt. Tôi có một câu hỏi khác có liên quan. Giả sử trang chủ của tôi có trình chiếu.Tôi có nên gọi mã trình chiếu trong hàm 'pageinit' hoặc 'pageshow' không? – cusejuice
'pageshow' sẽ kích hoạt mỗi lần người dùng xem trang tiếp theo. Ví dụ: nó sẽ kích hoạt khi bạn xem trang chủ lần đầu tiên, nhưng nó cũng sẽ kích hoạt khi bạn điều hướng đi và sau đó quay lại trang chủ. Tôi sẽ thiết lập trình chiếu trong trình xử lý sự kiện 'pageinit' nhưng sau đó dừng nó trong trình xử lý sự kiện' pagehide' và khởi động nó trong trình xử lý sự kiện 'pageshow'. Điều này sẽ làm việc cho tải ban đầu vì sự kiện 'pageshow' kích hoạt sau sự kiện' pageinit'. – Jasper
Nếu tôi cài đặt trình chiếu (tức là chạy một hàm để bắt đầu trình chiếu) trong BOTH của trình xử lý sự kiện 'pageinit' và' pageshow', nó sẽ không gọi hàm đó hai lần? – cusejuice