Hi I have a simple html structure
<h1>Title text <span>inner text</span></h1>
What I want is to replace only the text (Title text) without disturb the <span>
text. Is this possible?
I don't want to add any other dom element, I would like to keep that structure. I been doing this of course.
$("h1").text("new text");
But you can guess... will replace all the innert text and the span
text element as well.
Possible solution:
I was thinking in copy in a variable the text of the span and then concatenate it with the new <h1>
text, But I think maybe exist a better and clean way to do it.
Using jQuery.contents() you can replace the
nodeValue
similar to this:DEMO using
jQuery.contents()
to replace a text nodeThis is gonna work without jquery:
I found this question which might be useful.
you can get the child element by doing this:
You can then use the spans innerHTML as part of the h1 elements innerHTML, i.e.: h1_elt.innerHTML = "new text "+span.innerHTML+""
The only thing you would need to change about your HTML is to give the h1 element an id attribute, then use that in place of h1_elt_id.
The following will work.
http://jsfiddle.net/TFYmv/
Basically what you're doing is taking a picture of all the children in a specific element, changing the element completely, then re-appending all the previous children back onto the parent element using the picture we took.
DEMO: http://jsfiddle.net/FvbJa/