Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как обрамить несколько элементов в ul (https://javascript.ru/forum/jquery/9664-kak-obramit-neskolko-ehlementov-v-ul.html)

B@rmaley.e><e 31.05.2010 10:53

$('ul.menu').each(function(){
  $('<ul class="menu"></ul>').append($('li:gt(4)', this)).insertAfter(this);
});

Alexxx 31.05.2010 10:58

Цитата:

Сообщение от B@rmaley.e><e (Сообщение 57164)
$('ul.menu').each(function(){
  $('<ul class="menu"></ul>').append($('li:gt(4)', this)).insertAfter(this);
});

Да, работает, спасибо за подсказку, но дело в том, что li:gt(4) обрамляет не каждые 4 пункта меню, а первые 4 и все остальные (а их может быть много). Поэтому получается, что такой вариант корректно работает с меню до 8 пунктов.

Alexxx 31.05.2010 10:58

Цитата:

Сообщение от micscr (Сообщение 57161)
За готовым кодом - в раздел работа, там за пару баксов сделают.

А тут попрошу потрудиться самому иначе не будет толка.
Алгоритм уточню:
1) создаем контейнер накопления
2) пробегаем по li существующего при этом каждые 4-е запихиваем в отдельный ul
3) эти отдельные ul добавляем в контейнер
4) вместо исходного списка вставляем контейнер

Используются только широко распространенные методы jQuery. Жду попыток. :)

Буду пытаться. Хотя даже не знаю как сделать 1 пункт))

micscr 31.05.2010 11:03

Цитата:

Сообщение от Alexxx (Сообщение 57166)
Буду пытаться. Хотя даже не знаю как сделать 1 пункт))

$ulist = $('<div></div>');

x-yuri 31.05.2010 11:36

Цитата:

Сообщение от Alexxx
Я в Jquery небельмес

если ты в javascript бельмес, вопросов быть не должно

Цитата:

Сообщение от Alexxx
Буду пытаться. Хотя даже не знаю как сделать 1 пункт))

задавай вопросы

exec 31.05.2010 11:48

Есть ещё такой вариант:

var num = 3; // кол-во четвёрок <li>
for (var i = 0; i <= num; i++) {
	$('ul.menu li:lt(' + (i * 4) + '):gt(' + (i * 4 + 3) + ')').wrapAll('<ul class="menu"></ul>')
}

micscr 31.05.2010 12:08

Цитата:

Сообщение от exec (Сообщение 57174)
Есть ещё такой вариант:

var num = 3; // кол-во четвёрок <li>
for (var i = 0; i <= num; i++) {
	$('ul.menu li:lt(' + (i * 4) + '):gt(' + (i * 4 + 3) + ')').wrapAll('<ul class="menu"></ul>')
}

проверял? А то у меня ничего не происходит(потому что коллекции пустые).

B@rmaley.e><e 31.05.2010 12:09

Цитата:

Сообщение от exec
var num = 3; // кол-во четвёрок <li>

Ужас. А вычислить нельзя?

micscr 31.05.2010 12:24

Цитата:

Сообщение от B@rmaley.e><e (Сообщение 57179)
Ужас. А вычислить нельзя?

а зачем ему мучаться? Главное же побыстрей свой новый вариант продемонстрировать :blink: . А работает, не работает ...

x-yuri 31.05.2010 12:30

Цитата:

Сообщение от micscr
проверял? А то у меня ничего не происходит(потому что коллекции пустые).

хотя казалось бы, такой ник... мог бы и проверить :)


Часовой пояс GMT +3, время: 20:24.