#jquery #next #closest
#jquery #Далее #ближайший
Вопрос:
У меня есть следующий HTML, например
<body>
<div class="myCool">blah</div>
<div class="cool">some text</div>
<div class="cool">some text</div>
<div class="cool">some text</div>
<div class="cool">some text</div>
<div class="myCool">blah</div>
<div class="cool">some text</div>
<div class="cool">some text</div>
<div class="cool">some text</div>
<div class="cool">some text</div>
</body>
Что я пытаюсь сделать, это начать с myCool
и обернуть его и следующие 4 класса cool
в a div
? Итак, это выглядит так
<div id="1" class="myWrapped">
<div class="myCool">blah</div>
<div class="cool">some text</div>
<div class="cool">some text</div>
<div class="cool">some text</div>
<div class="cool">some text</div>
</div>
<div id="2" class="myWrapped">
<div class="myCool">blah</div>
<div class="cool">some text</div>
<div class="cool">some text</div>
<div class="cool">some text</div>
<div class="cool">some text</div>
</div>
Есть идеи, как я могу это сделать?
Комментарии:
1. Атрибуты идентификатора всегда должны начинаться с буквы: w3.org/TR/html4/struct/global.html#adef-id
Ответ №1:
попробуйте
$(".myCool").each(function(i){
$(this).nextUntil(".myCool").andSelf().wrapAll("<div id='" (i 1) "' class='myWrapped'></div>");
});
Комментарии:
1. хорошее решение, хотя забыл идентификатор!
2. Вы, сэр, — легенда! Спасибо — это было
.andSelf()
то, чего мне не хватало 🙂 Добавлениеid
также было бы предпочтительнее? Как насчет.each(function(i)} ..... <div id="' i '" ...
3. @KevinB — просто вопрос — если бы я хотел сделать это только для 1 «set»? Как бы я это сделал? т. е. от
.mycool
до.cool
x4, но без 2-го и т. Д. Т. Е. Нужно использовать что-то вроде .next(‘cool’)` для 4x или что-то в этом роде или?4. @Andy — Просто не используй
.each
.$(".myCool").nextUntil(".myCool").etc...
5. @KevinB — спасибо за ответ! нет, но я имею в виду — если у меня нет следующего
.myCool
, то есть у меня есть только.myCool, .cool x4
Ответ №2:
вы можете сделать так
jQuery("<div class='myCool'>blah</div>").appendTo('body');
for(var i=0; i<4;i )
{
jQuery('<div class="cool">some text</div>').appendTo('.myCool');
}
Комментарии:
1. -1 вообще не отвечает на вопрос