2011-11-15 28 views
6

Tôi đang xây dựng một webapp bằng cách sử dụng khung công tác jqm và tôi đã cố gắng sử dụng chức năng pageshow khi bao gồm một tiện ích jQuery, k3dcarousel. Trên trang trong câu hỏi, tôi có kịch bản của tôi bên dưới data-role="page" div,Jquery Mobile pageshow function

$("#page-about").live(
    "pageshow", 
    function (event) { 
     $('#k3dCarousel_portrait').k3dCarousel(); 
    } 
); 

Dường như tôi cần phải bấm vào liên kết của tôi hai lần để có được những chức năng JS để tải, mà sẽ làm cho tôi nghĩ rằng tôi đang sử dụng này chức năng sai. Ngoài ra, nếu tôi không sử dụng chức năng $("#page-about").die(); bên dưới chức năng pageshow, tập lệnh sẽ được tải nhiều lần nếu tôi nhấp lại và sau đó nhấp lại vào liên kết.

Tôi có sử dụng logic pageshow sai không? Có cách nào tốt hơn để đạt được những gì tôi đang cố gắng làm: AJAX trang này vào khung di động của tôi không.

Tôi hiểu đây là một câu hỏi khá cụ thể, nhưng hy vọng có một câu trả lời chung cho điều này, vì dường như với tôi rằng điều này có thể xảy ra với bất kỳ tiện ích nào.

Bất kỳ trợ giúp nào được đánh giá cao, tôi có thể dán nhiều mã hơn nếu điều đó giúp ích.

Cảm ơn bạn đã dành thời gian.

Trả lời

7

Vì bạn đang ràng buộc với sự kiện pageshow, chức năng ẩn danh sẽ kích hoạt mọi lúc bạn xem trang. Nếu bạn chỉ muốn gọi mã trên quan điểm đầu tiên của trang sau đó, hoặc liên kết với pagecreate/pageinit sự kiện hoặc kiểm tra sự tồn tại của k3dCarousel trong pageshow mã của bạn:

$("#page-about").live(
    "pageshow", 
    function (event) { 
     //check for the existence of HTML within the container element 
     if ($('#k3dCarousel_portrait').html().length == 0) { 
      $('#k3dCarousel_portrait').k3dCarousel(); 
     } 
    } 
); 

Dưới đây là một lời giải thích của tất cả các jQuery Sự kiện cụ thể cho điện thoại di động: http://jquerymobile.com/demos/1.0rc3/docs/api/events.html

+0

Cảm ơn phản hồi của bạn, mã của bạn đã giúp tôi di chuyển. Lý do tôi đã sử dụng pageshow hơn là pagecreate/init là tôi dường như không thể nhận được bất kỳ js nào để kích hoạt bằng cách sử dụng các hàm đó. Tôi đang trên rc2 vì vậy có lẽ tôi cần phải cập nhật ... –