How do you convert a jQuery object into a string?

JqueryStringification

Jquery Problem Overview


How do you convert a jQuery object into a string?

Jquery Solutions


Solution 1 - Jquery

I assume you're asking for the full HTML string. If that's the case, something like this will do the trick:

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

This is explained in more depth here, but essentially you make a new node to wrap the item of interest, do the manipulations, remove it, and grab the HTML.

If you're just after a string representation, then go with new String(obj).

Update

I wrote the original answer in 2009. As of 2014, most major browsers now support outerHTML as a native property (see, for example, Firefox and [Internet Explorer][3]), so you can do:

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

[3]: http://msdn.microsoft.com/en-us/library/ie/ms534310(v=vs.85).aspx)

Solution 2 - Jquery

With jQuery 1.6, this seems to be a more elegant solution:

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

Solution 3 - Jquery

Just use .get(0) to grab the native element, and get its outerHTML property:

var $elem = $('<a href="#">Some element</a>');
console.log("HTML is: " + $elem.get(0).outerHTML);

Solution 4 - Jquery

Can you be a little more specific? If you're trying to get the HTML inside of a tag you can do something like this:

HTML snippet:

<p><b>This is some text</b></p>

jQuery:

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

Solution 5 - Jquery

The best way to find out what properties and methods are available to an HTML node (object) is to do something like:

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

From jQuery 1.6+ you can just use outerHTML to include the HTML tags in your string output:

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

Solution 6 - Jquery

jQuery is up in here, so:

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

Return all that HTML stuff:

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

Solution 7 - Jquery

This seems to work fine for me:

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

Solution 8 - Jquery

The accepted answer doesn't cover text nodes (undefined is printed out).

This code snippet solves it:

var htmlElements = $('<p><a href="http://google.com">google</a></p>↵↵<p><a href="http://bing.com">bing</a></p>'),
    htmlString = '';
    
htmlElements.each(function () {
    var element = $(this).get(0);

    if (element.nodeType === Node.ELEMENT_NODE) {
        htmlString += element.outerHTML;
    }
    else if (element.nodeType === Node.TEXT_NODE) {
        htmlString += element.nodeValue;
    }
});

alert('String html: ' + htmlString);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Solution 9 - Jquery

No need to clone and add to the DOM to use .html(), you can do:

$('#item-of-interest').wrap('<div></div>').html()

Solution 10 - Jquery

It may be possible to use the jQuery.makeArray(obj) utility function:

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

Solution 11 - Jquery

If you want to stringify an HTML element in order to pass it somewhere and parse it back to an element try by creating a unique query for the element:

// 'e' is a circular object that can't be stringify
var e = document.getElementById('MyElement')

// now 'e_str' is a unique query for this element that can be stringify 
var e_str = e.tagName
  + ( e.id != "" ? "#" + e.id : "")
  + ( e.className != "" ? "." + e.className.replace(' ','.') : "");

//now you can stringify your element to JSON string
var e_json = JSON.stringify({
  'element': e_str
})

than

//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();

Solution 12 - Jquery

new String(myobj)

If you want to serialize the whole object to string, use JSON.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionchief7View Question on Stackoverflow
Solution 1 - JqueryJohn FeminellaView Answer on Stackoverflow
Solution 2 - JquerynickhView Answer on Stackoverflow
Solution 3 - JquerymppfilesView Answer on Stackoverflow
Solution 4 - JqueryAlex RockwellView Answer on Stackoverflow
Solution 5 - JquerycrystalhView Answer on Stackoverflow
Solution 6 - JqueryMax MeentsView Answer on Stackoverflow
Solution 7 - JqueryJohan DettmarView Answer on Stackoverflow
Solution 8 - JqueryMartin SznapkaView Answer on Stackoverflow
Solution 9 - JquerySt KissView Answer on Stackoverflow
Solution 10 - JqueryduttymanView Answer on Stackoverflow
Solution 11 - JqueryYaron HelferView Answer on Stackoverflow
Solution 12 - JqueryVasilView Answer on Stackoverflow