Comment convertir un object jQuery en chaîne?

Comment convertir un object jQuery en chaîne?

Je suppose que vous demandez la chaîne HTML complète. Si tel est le cas, quelque chose comme ça fera l’affaire:

$('
').append($('#item-of-interest').clone()).html();

Ceci est expliqué plus en détail ici , mais essentiellement vous créez un nouveau nœud pour envelopper l’élément d’intérêt, faire les manipulations, le retirer et récupérer le HTML.

Si vous êtes juste après une représentation sous forme de chaîne, utilisez la new Ssortingng(obj) .

Mettre à jour

J’ai écrit la réponse originale en 2009. En 2014, la plupart des principaux navigateurs prennent désormais en charge outerHTML tant que propriété native (voir, par exemple, Firefox et Internet Explorer ), vous pouvez donc faire:

 $('#item-of-interest').prop('outerHTML'); 

Avec jQuery 1.6, cela semble être une solution plus élégante:

 $('#element-of-interest').prop('outerHTML'); 

Il suffit d’utiliser .get (0) pour récupérer l’élément natif et obtenir sa propriété outerHTML:

 var $elem = $('Some element'); console.log("HTML is: " + $elem.get(0).outerHTML); 

Pouvez-vous être un peu plus précis? Si vous essayez d’obtenir le code HTML à l’ intérieur d’une balise, vous pouvez faire quelque chose comme ceci:

Extrait HTML:

 

This is some text

jQuery:

 var txt = $('p').html(); // Value of text is This is some text 

La meilleure façon de savoir quelles propriétés et méthodes sont disponibles pour un nœud HTML (object) est de faire quelque chose comme:

 console.log($("#my-node")); 

A partir de jQuery 1.6+, vous pouvez simplement utiliser outerHTML pour inclure les balises HTML dans la sortie de votre chaîne:

 var node = $("#my-node").outerHTML; 

jQuery est là, alors:

 jQuery.fn.goodOLauterHTML= function() { return $('').append( this.clone() ).html(); } 

Renvoie tous ces éléments HTML:

 $('div' /*elys with HTML text stuff that you want */ ).goodOLauterHTML(); // alerts tags and all 

Cela semble bien fonctionner pour moi:

 $("#id")[0].outerHTML 

La réponse acceptée ne couvre pas les nœuds de texte (undefined est imprimé).

Cet extrait de code résout le problème:

 var htmlElements = $('

google

↵↵

bing

'), htmlSsortingng = ''; htmlElements.each(function () { var element = $(this).get(0); if (element.nodeType === Node.ELEMENT_NODE) { htmlSsortingng += element.outerHTML; } else if (element.nodeType === Node.TEXT_NODE) { htmlSsortingng += element.nodeValue; } }); alert('Ssortingng html: ' + htmlSsortingng);
  

Pas besoin de cloner et d’append au DOM pour utiliser .html (), vous pouvez le faire:

 $('#item-of-interest').wrap('
').html()

Il est possible d’utiliser la fonction utilitaire jQuery.makeArray(obj) :

 var obj = $('

',{'class':'className'}).html('peekaboo'); var objArr = $.makeArray(obj); var plainText = objArr[0];

Si vous voulez ficeler un élément HTML pour le transmettre quelque part et le réparsingr en un élément, créez une requête unique pour l’élément:

 // 'e' is a circular object that can't be ssortingngify var e = document.getElementById('MyElement') // now 'e_str' is a unique query for this element that can be ssortingngify var e_str = e.tagName + ( e.id != "" ? "#" + e.id : "") + ( e.className != "" ? "." + e.className.replace(' ','.') : ""); //now you can ssortingngify your element to JSON ssortingng var e_json = JSON.ssortingngify({ 'element': e_str }) 

que

 //parse it back to an object var obj = JSON.parse( e_json ) //finally connect the 'obj.element' varible to it's element obj.element = document.querySelector( obj.element ) //now the 'obj.element' is the actual element and you can click it for example: obj.element.click(); 
 new Ssortingng(myobj) 

Si vous souhaitez sérialiser l’object entier en chaîne, utilisez JSON .