42 votes

jQuery Mobile n'applique pas de styles après l'ajout dynamique de contenu

Je sais que cette question à plusieurs endroits (en Forçant jQuery Mobile pour ré-évaluer styles/thème sur insérés dynamiquement le contenu), mais pas avec une réponse qui est de travailler pour moi.

Je suis le chargement de certains contenus à l'aide d'ajax, et en l'insérant dans un div comme ceci:

       $.ajax({
            url: "../Services/CalendarService.cshtml?service=true",
            cache: false,
            success: function (data) {

                data = $.parseJSON(data);
                var s = $("#user_tmpl").html();
                var s1 = tmpl(s, data);

                $("#target").html(s1);
                $("#targetRefresh").page();
            }
        });

J'ai essayé de réglage de la targetRefresh sur la cible, je suis en ajoutant le code html, et sur la page, mais avec pas de chance. Le conent est inséré, mais le style n'est pas appliqué.

J'ai aussi essayé

.trigger("enhance")

Aucune idée de quoi faire?

Le code html inséré un tas de ces:

<div data-theme="e" data-collapsed="true" data-role="collapsible">         <h3>MyOwner2AA</h3>         <p>MyDescription</p>         <p>/Date(1320339836735)/</p>         <p>MyOwner</p>         <i></i>     </div>

Merci pour toute aide

Larsi

92voto

Phil Points 1624

Essayez d'appeler .trigger("create") sur l'élément avec le nouveau contenu.

Selon les documents jQuery Mobile , "l'événement create convient à l'amélioration du balisage brut contenant un ou plusieurs widgets".

33voto

Sagar Gala Points 473

Cela a fonctionné pour moi pour la vue liste

 $('ul').listview('refresh');
 

Aussi, vous pouvez actualiser le pliable

 $('#element').collapsibleset('refresh')
 

5voto

Christopher Käck Points 163

Lorsque j'ai essayé les solutions ci-dessus, j'ai reçu un message d'erreur dans Firebug.

exception non interceptée: impossible d'appeler des méthodes sur listview avant l'initialisation; a tenté d'appeler la méthode 'refresh'

J'ai trouvé un correctif pour cela cependant, au lieu d'appeler .trigger("create") après l'ajout des nouveaux éléments que j'ai appelés

 $("ul").listview();
 

à la fin de la fonction de rappel ajax.

Cela a tout fonctionne bien pour moi. J'espère que ça aide.

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