2

I want to add a div on the three following elements:

<div class="wrapper">
   <fieldset class="inner"></fieldset>
   <fieldset class="inner first_name"></fieldset>
   <fieldset class="inner last_name"></fieldset>
   <fieldset class="inner user"></fieldset>
   <fieldset class="inner password"></fieldset>
   <fieldset class="inner"></fieldset>
   <fieldset class="inner avatar"></fieldset>
   <fieldset class="inner submit"></fieldset>
</div>

So the results are as follows:

<div class="wrapper">

   <div class="inner-left">
      <fieldset class="inner"></fieldset>
      <fieldset class="inner first_name"></fieldset>
      <fieldset class="inner last_name"></fieldset>
      <fieldset class="inner user"></fieldset>
      <fieldset class="inner password"></fieldset>
   </div>

   <div class="inner-middle">
      <fieldset class="inner"></fieldset>
      <fieldset class="inner avatar"></fieldset>
   </div>

   <div class="inner-right">
      <fieldset class="inner submit"></fieldset>
   </div>

</div>

I've tried Jquery Multiple Wrap, but I can not implement it. can it be done with jQuery?

Thank you,

Yudi
  • 137
  • 2
  • 14

3 Answers3

3

Use .wrapAll() in jquery. And .slice() split the dom elements what you want

$(".inner").slice(0,5).wrapAll( "<div class='inner-left'></div>" );
$(".inner").slice(5,7).wrapAll( "<div class='inner-middle'></div>" );
$(".inner").slice(7).wrapAll( "<div class='inner-right'></div>" );

DEMO

var cache = $( ".inner" )

cache.slice(0,5).wrapAll( "<div class='inner-left'></div>" )
     .end()
     .slice(5,7).wrapAll( "<div class='inner-middle'></div>" )
     .end()
     .slice(7).wrapAll( "<div class='inner-right'></div>" );
Sudharsan S
  • 15,336
  • 3
  • 31
  • 49
1

You can use :lt and :gt pseudo selectors to get a range of elements, then wrapAll to put them in an element:

$('.inner:lt(5)').wrapAll($('<div>').addClass('inner-left'));
$('.inner:gt(4):lt(2)').wrapAll($('<div>').addClass('inner-middle'));
$('.inner:gt(6)').wrapAll($('<div>').addClass('inner-right'));

Demo: http://jsfiddle.net/7JY8p/1/

Guffa
  • 687,336
  • 108
  • 737
  • 1,005
0

Try this

$('.inner:eq(0), .inner:eq(1), .inner:eq(2), .inner:eq(3), .inner:eq(4)').wrapAll( "<div class='inner-left'></div>");

$('.inner:eq(5), .inner:eq(6)').wrapAll( "<div class='inner-middle'></div>");

$('.inner:eq(7)').wrap( "<div class='inner-right'></div>");
Dhaval Panchal
  • 648
  • 6
  • 26