jQuery « Как обернуть несколько элементов в DIV.
Всем привет! Есть у меня большой DIV, в нем много мелких DIV, я хочу прогнать этот большой DIV, и каждые N элементов обернуть(wrap) в другой DIV с классом.
Пример:
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .javascript.geshi_code {font-family:monospace;} .javascript.geshi_code .imp {font-weight: bold; color: red;} .javascript.geshi_code .kw1 {color: #000066; font-weight: bold;} .javascript.geshi_code .kw2 {color: #003366; font-weight: bold;} .javascript.geshi_code .kw3 {color: #000066;} .javascript.geshi_code .co1 {color: #006600; font-style: italic;} .javascript.geshi_code .co2 {color: #009966; font-style: italic;} .javascript.geshi_code .coMULTI {color: #006600; font-style: italic;} .javascript.geshi_code .es0 {color: #000099; font-weight: bold;} .javascript.geshi_code .br0 {color: #009900;} .javascript.geshi_code .sy0 {color: #339933;} .javascript.geshi_code .st0 {color: #3366CC;} .javascript.geshi_code .nu0 {color: #CC0000;} .javascript.geshi_code .me1 {color: #660066;} .javascript.geshi_code span.xtra { display:block; }
$('.myclass div').each(function() {
if(elements.length >= settings.imagesPerLine) { // тут срабатывает когда количество элементов достигает размера строки
// тут нужно как нибудь сделать, чтобы все(не каждый) элементы массива обернулись в <div class="line"></div>
elements = [];
}
elements.push($(this));
});
Вот как мне обернуть несколько элементов сразу? Не могу разобраться что-то.
Пример:
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .javascript.geshi_code {font-family:monospace;} .javascript.geshi_code .imp {font-weight: bold; color: red;} .javascript.geshi_code .kw1 {color: #000066; font-weight: bold;} .javascript.geshi_code .kw2 {color: #003366; font-weight: bold;} .javascript.geshi_code .kw3 {color: #000066;} .javascript.geshi_code .co1 {color: #006600; font-style: italic;} .javascript.geshi_code .co2 {color: #009966; font-style: italic;} .javascript.geshi_code .coMULTI {color: #006600; font-style: italic;} .javascript.geshi_code .es0 {color: #000099; font-weight: bold;} .javascript.geshi_code .br0 {color: #009900;} .javascript.geshi_code .sy0 {color: #339933;} .javascript.geshi_code .st0 {color: #3366CC;} .javascript.geshi_code .nu0 {color: #CC0000;} .javascript.geshi_code .me1 {color: #660066;} .javascript.geshi_code span.xtra { display:block; }
$('.myclass div').each(function() {
if(elements.length >= settings.imagesPerLine) { // тут срабатывает когда количество элементов достигает размера строки
// тут нужно как нибудь сделать, чтобы все(не каждый) элементы массива обернулись в <div class="line"></div>
elements = [];
}
elements.push($(this));
});
Вот как мне обернуть несколько элементов сразу? Не могу разобраться что-то.
1 ответов
Набросал вам такой вариант. На мой взгляд не очень элегантный, но по крайней мере работает и сегодня уже нет сил для чего-то гениального ))
Нашел еще один неплохой и элегантный вариант:
var set = this.children(); // набор элементов
for(var i = 0, len = set.length; i < len; i += settings.imagesPerLine){
set.slice(i, i + settings.imagesPerLine) // выбираем нужно количество картинок для линии
.wrapAll('<div class="line"/>')
.wrap('<div class="photo"/>');
}
$(document).ready(function(){
var count = 5; //Количество элементов на странице
itemsWrapper(count);
function itemsWrapper(count){
$('#wrapper > .item').each(function(i){
if((i == 0) || (i % count == 0)){
id = i;
//Вставляем пустую обертку для набора
$('#wrapper').append('<div class="page" id="page_'+i+'"></div>');
}
$(this).appendTo('#page_'+id); // Переносим элемент в обертку
});
}
});
Может кому пригодится.