2011-10-02 35 views
9

Về cơ bản, tôi chỉ cần sử dụng chức năng tùy chỉnh khi, trang #reviews được nhấp vào từ trang chủ.jQuery Mobile: Nhận ID của trang trước

Đây là mã hiện tại tôi đang sử dụng:

$(document).bind("mobileinit", function(){ 
    $('#reviews').live('pagebeforeshow',function(event){ 
    var cpage = $.mobile.activePage.attr('id'); 
     if (cpage == 'home') { 
      addPages(); 
     } 
    }); 
}); 

Vấn đề là, mặc dù nó được sử dụng 'pagebeforeshow' nó đang sử dụng id của trang đó là về để chuyển đổi sang như trang hoạt động , trong trường hợp này là 'đánh giá' chứ không phải ở nhà, do đó làm cho câu lệnh if thất bại.

Vì vậy, câu hỏi của tôi là, trong ví dụ này, làm cách nào tôi nhận được id của trang trước đó, để đảm bảo rằng nó thực tế đến từ trang #home?

Trả lời

23

Để hoàn thành câu trả lời: bạn sẽ nhận được một đối tượng jQuery trở lại, vì vậy để có được ID của trang làm điều này:

$("#page-id").live('pagebeforeshow', function(event, data) { 
    console.log("the previous page was: " + data.prevPage.attr('id')); 
}); 

data.prevPage là nhận trang trước khi đối tượng jQuery,

.attr ('id') lấy id từ đối tượng jQuery đó.

+0

Chỉ là một FYI cho những người khác, sự kiện 'pagebeforeshow' hiện không còn được dùng nữa và sẽ sớm bị xóa. Xem trang này để thay thế: https://api.jquerymobile.com/pagebeforeshow/ –

6

pagebeforeshow trình xử lý sự kiện thực sự nhận được 2 thông số: sự kiện và ui. Bạn có thể truy cập trang trước đó từ ui. Đây là một ví dụ từ jquery-mobile event docs:

$('div').live('pageshow', function(event, ui){ 
    alert('This page was just hidden: '+ ui.prevPage); 
}); 

Những params là như nhau cho tất cả 4 trang show/hide sự kiện.

+0

Cảm ơn, điều này đã trả lời câu hỏi của tôi – tblakey89

+0

Tuyệt vời. Bạn nên đánh dấu nó là được chấp nhận. – mkriheli

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