Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jQuery - get contents of selected element (not html of its contents)

Tags:

jquery

Say I have the following html:

<div id="myDiv" title="My Div">This is me!</div>

I want to write a jquery statement such that the result is the entire line above as a string.

I almost want something like: var selectedHtml = $("#myDiv").self(); (I know that's not valid jquery) which results in selectedHtml having the value "<div id="myDiv" title="My Div">This is me!</div>"

Any ideas about which jquery function I'm looking for?

PS: getting the .html() of this node's .parent() will not work as it will give me siblings of the above node too.

like image 351
psychotik Avatar asked Feb 03 '10 07:02

psychotik


People also ask

What is $() in jQuery?

The jQuery syntax is tailor-made for selecting HTML elements and performing some action on the element(s). Basic syntax is: $(selector).action() A $ sign to define/access jQuery. A (selector) to "query (or find)" HTML elements. A jQuery action() to be performed on the element(s)

How do I get inner text in jQuery?

Answer: Use the jQuery text() method You can simply use the jQuery text() method to get all the text content inside an element. The text() method also return the text content of child elements.

How do I get just the text from HTML in jQuery?

You could use $('. gettext'). text(); in jQuery.

How is content manipulation done in jQuery?

Three simple, but useful, jQuery methods for DOM manipulation are: text() - Sets or returns the text content of selected elements. html() - Sets or returns the content of selected elements (including HTML markup) val() - Sets or returns the value of form fields.


2 Answers

I think might also be possible:

  • wrap your div with another div (<div id="wrapdiv" />) --> wrap()
  • get the html on the wrapdiv
  • unwrap the wrapdiv (so do $("#myDiv").unwrap()) --> unwrap()

Here is a live example: http://jsbin.com/oniki/edit

edit:

Perhaps this is better because it doesn't use an id for the wrapperdiv and therefore less change for bugs with existing ids:

  • wrap() your div with another (nameless) div
  • get the html() of the parent() of your div
  • unwrap() your div

See it in action: http://jsbin.com/oniki/3/edit

like image 198
Natrium Avatar answered Nov 09 '22 20:11

Natrium


You can use plain javascript to do this.

var selectedHtml = document.getElementById ( "myDiv" ).outerHTML; //IE only

You can use this to get the outerHTML of a jquery element

jQuery.fn.outerHTML = function() {
    return $('<div>').append( this.eq(0).clone() ).html();
};

From

jQuery Snippets: outerHTML

like image 23
rahul Avatar answered Nov 09 '22 18:11

rahul