41 votes

Comment initialiser les pages en jquery mobile? pageinit pas de tir

Quelle est la bonne façon d'initialiser des objets sur jquery mobile de la page? Les événements docs disent utiliser "pageInit()" avec pas d'exemples de cette fonction, mais de donner des exemples de liaison à l' "pageinit" de la méthode (note cas de différence). Cependant, je ne vois pas le cas de tir dans cette simple page de test:

<html>
 <body>  
  <script type="text/javascript" charset="utf-8" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>  
  <script type="text/javascript" charset="utf-8" src="http://code.jquery.com/mobile/1.0b3/jquery.mobile-1.0b3.min.js"></script>

  <div data-role="page" id="myPage">
    test
  </div>

  <script>
    $("#myPage").live('pageinit',function() {
        alert("This never happens");
    });
  </script>
 </body>
</html>

Ce qui me manque? Je dois ajouter que si vous modifiez pageinit à un autre événement du genre pagecreate ce code fonctionne.

---- Mise à JOUR ----

Ce bug est marqué comme "fermé" dans le JQM bug tracker. Apparemment les avis divergent quant à savoir si ce fonctionne correctement ou non.

66voto

Wojciech Bańcer Points 821

Il a commencé à travailler quand j'ai incorporé un script dans la page div:

<body>
    <div id="indexPage" data-role="page">
        <script type="text/javascript">
            $("#indexPage").live('pageinit', function() {
                // do something here...
            });
        </script>
    </div>
</body>

Utilisé jQuery Mobile 1.0RC1

21voto

geralOE Points 288

.live() est obsolète, la suggestion est d'utiliser .on() en jQuery 1.7+ :

<script type="text/javascript">
    $(document).on('pageinit', '#indexPage',  function(){
        // code 
    });
</script>

De vérifier la doc en ligne pour plus d'informations sur l' .on(): http://api.jquery.com/on/

9voto

Leopd Points 12652

S'avère que c'est un bug en 1.0b3 qui est résolu dans le courant de tête. Donc, si vous voulez un correctif maintenant, tu dois prendre la dernière à partir de git. Ou d'attendre la prochaine version.

2voto

Ravindra Padhi Points 21
jQuery(document).live('pageinit',function(event){
    centerHeaderDiv();
    updateOrientation();
    settingsMenu.init();
    menu();
    hideMenuPopupOnBodyClick(); 
})

Ce travail est maintenant. Maintenant, toutes les transitions de page et tous les JQM la fonctionnalité AJAX serait de travailler avec votre défini les fonctions javascript! Profitez-en!

2voto

Stancho Stanchev Points 211

pageinit ne se déclenchera pas en cas c'est sur les pages secondaires ( PAS la page PRINCIPALE ) si c'est écrit dans la commune de la balise <script>...

J'ai un problème sur les pages secondaires qui ne sont pas chargés avec 'rel="external"", le code dans la commune de la balise <script> est jamais exécuté...

vraiment ce code est toujours exécutée...

<body>
    <div id="indexPage" data-role="page">
        <script type="text/javascript">
            $("#indexPage").live('pageinit', function() {
                // do something here...
            });
        </script>
    </div>
</body>

bien qu', si vous faites "onglets de l'interface", à l'aide de "pageshow" est mieux

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X