在jQuery中,如果我有一个开始和结束类,我如何用div包装多个元素



好的,这里有一些html。我有一些开始和结束课程,但为了这个目的,我只增加了每个课程中的一个。

<div id="DaySchedule_5amDetail">
    <span>&nbsp;</span>
</div>
<div id="DaySchedule_6amDetail">
    <span>&nbsp;</span>
</div>
<div id="DaySchedule_7amDetail" class="start"> <-- start
    <span>&nbsp;</span>
</div>
<div id="DaySchedule_8amDetail">
    <span>&nbsp;</span>
</div>
<div id="DaySchedule_9amDetail">
    <span>&nbsp;</span>
</div>
<div id="DaySchedule_10amDetail" class="end"> <-- end
    <span>&nbsp;</span>
</div>
<div id="DaySchedule_11amDetail">
    <span>&nbsp;</span>
</div>

我正在尝试让jquery在div 中从类开始到类结束包装元素

我尝试了很多不同的东西,并仔细查看了stackoverflow。

$('div.start').each(function(){
   $(this).nextUntil('div.end').wrap(document.createElement('div'));
});

根据我的发现,这应该有效,但毫无作用。它甚至没有创建div

$("div.start").wrapAll("<div>");

这只在类开始的元素周围创建了一个div,我想将其扩展到类结束。

有明确的方法吗?我是不是应该不用包了?有没有一种方法可以在具有特定类的元素之前插入一个opendiv标记,并在具有特定类别的元素之后添加一个结束标记(开始和结束)。我尝试过预附加和附加,但没有成功。

如有任何帮助,我们将不胜感激。非常感谢。

编辑:-----------------------------------------------------------

选择的答案对我来说很有效,只需一些小操作,所以下面是对我有效的代码:

  $('.start').each(function(){
    var $nextGroup = $(this).nextUntil('.end').add(this);
    $nextGroup.add($nextGroup.next()).wrapAll('<div class="draggableStuff">');
});

你非常接近。。。。您确实想要wrapAll(),但使用了现有的nextUntil()概念。

$('.start').each(function(){
    $(this).nextUntil('.end').wrapAll('<div class="wrapper">');
});

演示

如果您还需要包装开始和结束,请使用add()添加开始和结束元素:

$('.start').each(function(){
     var $nextGroup= $(this).nextUntil('.end')
     $nextGroup.add(this).add($nextGroup.next()).wrapAll('<div class="wrapper">');
});

DEMO 2

最新更新