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
  • 5,031
  • 17
  • 33
  • 41

3 Answers3

2

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

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

Working Demo

Eli
  • 14,779
  • 5
  • 59
  • 77
2

Another solution using nextSibling:

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

http://jsfiddle.net/4MCen/

dfsq
  • 191,768
  • 25
  • 236
  • 258
1

Another Solution

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

Working Demo

Adil Shaikh
  • 44,509
  • 17
  • 89
  • 111