2012-03-22 3 views
4

У меня есть следующая структура, один внешний div (#results) и около 20 divs с событием класса. Я хочу, чтобы сгруппировать каждые 3 события и обернуть DIV называемый внешний вокруг них,jquery group every 3rd div

<div id="result"> 

    <div class="event"> 
     <div class="date">8 April</div> 
      <div class="eventname">my title</div> 
      <div class="link">my link goes here</div> 
    </div> 

// lots more events here 
</div> 

ответ

6

Try:

while ($('#result > .event').length > 0) { 
    $('#result > .event:lt(3)').wrapAll('<div class="wrap"></div>') 
}​​​​ 

http://jsfiddle.net/rxxjp/

+0

Clever использование прямого ребенок - мне это нравится. Есть, вероятно, дюжина способов подойти к этой же проблеме. – Blazemonger

+0

удивительный ответ спасибо – LeBlaireau

1

Я использовал splice и wrapAll функции группы 3 Дивых х и завернуть их в <div class="wrapper" ></div>

DEMO

var events = $('#result .event'); 

while (events.length >= 3) { 
    $(events.splice(0, 3)).wrapAll('<div class="wrapper" />'); 
} 

//wrap the remaining < than 3 div inside wrapper 
$(events.splice(0, events.length)).wrapAll('<div class="wrapper" />'); 
Смежные вопросы