7
votes

Pourquoi obtenir un HTML extérieur ne fonctionne pas?

J'essaie d'obtenir le HTML extérieur de deux manières différentes, basé sur Ceci Question . Malheureusement, aucun d'entre eux ne donne le résultat attendu:

html: xxx

js: xxx

la sortie est: xxx

Je m'attends au résultat suivant:

bonjour

Exemple en direct ici

Qu'est-ce que je fais mal?


3 commentaires

Dupliqué possible de Comment puis-je faire outerhtml à Firefox?


Votre Premier code Snippet fonctionne et votre seconde fonctionne presque. Regardez le HTML de la page. La sortie regarde comme un texte brut car il est rendu comme HTML ..... Notez les nouvelles lignes .... divs!


Super exemple de la façon de poser une question. C'est ce que je fais. Voici le code. Voici ce qui se passe. C'est ce que je m'attends à arriver.


5 Réponses :


2
votes

mise à jour forte> avec Démo

   $(function() {
        var html = $('<div>').append($('#my_div').clone()).html();
        $('body').html( htmlspecialchars( '[' + html + ']' ) );
   });


4 commentaires

Tout ce que je veux, c'est d'obtenir le HTML extérieur d'un élément donné, dans mon cas: $ ('# my_div') . Je ne veux pas ajouter des éléments à dom.


Donc, par exemple, vous voulez obtenir l'enveloppe de ma div !? En supposant qu'un code comme celui-ci:

bonjour ?


La chose est que je n'ai pas de wrapper, et de préférence, je ne veux pas créer un ... à nouveau, tout ce que j'ai est un élément, et je veux obtenir son HTML extérieur. Aussi simple que ça :)


@Misha - $ ('<

') ... ne crée pas d'emballage pour #my_div ou ajoutez des éléments à la DOM. Il fait une copie de #my_div et l'a ajouté à un
qui est non partie de la DOM. Cet autre div est juste un objet jQuery a utilisé l'extrait le HTML extérieur de #my_div ......... Voir ma réponse pour une explication de la raison pour laquelle vous pensiez votre premier code de code travail; Même si c'est fait.



0
votes

Essayez ceci:

var result = $('<div></div>').append($('#my_div').clone()).html();
alert(result);


3 commentaires

Vous devez échapper à la sortie pour le voir correctement => JSBIN.COM/ENEXI4/3/EDITIGERO/A >


Pas besoin de $ ('

') . $ ('
') fonctionnera également ... et le plus rapide est $ ('<
') .... si la vitesse n'est pas Un problème, je préfère $ ('
') pour la lisibilité.


Peter, quelle est la différence entre $ ('

') , $ ('
') et $ ('
') ?



5
votes

Voici une fonction utilisée dans la Lib pure.js pour obtenir l'OUTERHTML:

var html = outerHTML(document.getElementById('my_div'));


1 commentaires

+1 - Belle réponse. Vous devriez le poster dans le Question originale à propos de ce .