好的,这里有一些html。我有一些开始和结束课程,但为了这个目的,我只增加了每个课程中的一个。
<div id="DaySchedule_5amDetail">
<span> </span>
</div>
<div id="DaySchedule_6amDetail">
<span> </span>
</div>
<div id="DaySchedule_7amDetail" class="start"> <-- start
<span> </span>
</div>
<div id="DaySchedule_8amDetail">
<span> </span>
</div>
<div id="DaySchedule_9amDetail">
<span> </span>
</div>
<div id="DaySchedule_10amDetail" class="end"> <-- end
<span> </span>
</div>
<div id="DaySchedule_11amDetail">
<span> </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