60 votes

analyser la chaîne html avec jquery

J'ai une chaîne HTML à partir d'une source chargée Ajax. J'aimerais obtenir certains attributs d'un objet (image) dans cette chaîne, avant de placer le code HTML dans le document.

J'ai quelque chose comme:

 $.ajax({  
        url: uri+'?js',  
        success: function(data) { 
            var htmlCode = $(data).html();  

            $('#otherObject').html(data);
        }  
    });
 

Comment puis-je obtenir des attributs (les src par exemple) à partir de cette chaîne HTML?

107voto

falstro Points 16545

Je ne suis pas sûr à 100%, mais ne pas

$(data)

produire un objet jquery avec un DOM pour que les données qui ne correspondent pas n'importe où? Ou si c'est déjà analysée comme un DOM, vous pouvez tout simplement aller de $("#myImg", données), ou que ce soit sélecteur correspond à vos besoins.

MODIFIER
En relisant votre question, il semble que votre "data" est déjà un DOM, ce qui signifie que vous pouvez tout simplement aller (en supposant que il n'y a qu'une img dans votre DOM, sinon, vous aurez besoin d'un plus précis sélecteur)

$("img", data).attr ("src")

si vous souhaitez accéder à la src-attribut. Si vos données n'est qu'un texte, il serait sans doute du travail à faire

$("img", $(data)).attr ("src")

1voto

The Coder Points 269

Une chose à noter - comme j’ai eu exactement ce problème aujourd’hui, en fonction de votre code HTML, jQuery peut ou non l’analyser aussi bien. jQuery n'analyserait pas mon code HTML dans un DOM correct. Sur des fichiers compatibles XML plus petits, tout fonctionnait bien, mais le code HTML que j'avais (qui rendrait une page) ne serait pas analysé s'il était renvoyé à un rappel Ajax.

En fin de compte, j'ai simplement cherché manuellement dans la chaîne la balise que je voulais, pas idéale mais qui a fonctionné.

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