The solution doesn't work. $("h2").text() concatenates all the text
from every h2 (it would also miss any markup inside the h2). If you
want to extract the contents into a variable, then you'll have to
iterate over the collection of h2's to do the manipulation.

There are other ways to accomplish this in jQuery. Try this:

$("h2").wrapInner(document.createElement('h3')).find('h3').replaceAll
('h2');


On Aug 5, 8:33 am, "Cesar Sanz" <the.email.tr...@gmail.com> wrote:
> @ProfCrazyHorse:
> Your solution seems simple.. why to change something that is working fine?
>
>
>
>   ----- Original Message -----
>   From: Charlie
>   To: jquery-en@googlegroups.com
>   Sent: Wednesday, August 05, 2009 6:38 AM
>   Subject: [jQuery] Re: replaceWith()
>
>   there are lots of ways in jQuery to create relationships between selectors 
> depending on your markup. Without seeing any markup it's hard for anyone else 
> to help you create those connections
>
>   ProfCrazyHorse wrote:
> I want to replace one element with another, and keep the element
> contents intact.  For example, here, I'm replacing all h2 elements
> with h3's:
>
> $("a #replaceWith").click(function () {
>    var h2Text = $("h2").text();
>    $("h2").replaceWith("<h3>" + h2Text + "</h3>");
> });
>
> I have two questions.
>
> First, how can I do this more simply?  I tried the following, but $
> (this) refers to the anchor tag and not the h2 selector.  Is there a
> way in jQuery to refer to the selector, i.e. $("h2")?
>
> $("a #replaceWith").click(function () {
>    $("h2").replaceWith("<h3>" + $(this).text + "</h3>");
> });
>
> My second question:  Is there a method more appropriate than
> replaceWith to replace certain elements on the apge with others?
>
> Thank you!

Reply via email to