4

My HTML:

<div class="mainDiv">
  <p>This is a paragraph</p>
  <div class="innerDiv">This is a div</div>
  This is what I want to wrap
</div>

What I want:

<div class="mainDiv">
  <p>This is a paragraph</p>
  <div class="innerDiv">This is a div</div>
  <div class="wrapper">
    This is what I want to wrap
  </div>
</div>

I've tried:

$('.mainDiv').find(".innerDiv").next().wrap('<div class="wrapper" />')

but it does not work. How can I achieve above result?

double-beep
  • 4,567
  • 13
  • 30
  • 40

3 Answers3

2

You can use jQuery contents() along with slice method:

$('.mainDiv').contents().slice(-1).wrap('<div class="wrapper"/>');

Working Demo

Eli
  • 14,673
  • 5
  • 57
  • 77
2

Another solution using nextSibling:

$($('.mainDiv .innerDiv')[0].nextSibling).wrap('<div class="wrapper">');

http://jsfiddle.net/4MCen/

dfsq
  • 187,712
  • 24
  • 229
  • 250
1

Another Solution

$('.mainDiv').contents().last().wrap('<div class="wrapper"/>');

Working Demo

Mohammad Adil
  • 44,013
  • 17
  • 87
  • 109