好的,这是一些 html。我有几个开始和结束类(class),但为此我只添加了每个类(class)。
<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 我想将它扩展到类结束。
有没有明确的方法来做到这一点?我什至不应该使用 wrap 或 wrapAll 吗?有没有办法在具有特定类的元素之前注入(inject)一个开放的 div 标记,并在具有特定类(开始和结束)的元素之后添加一个结束标记。我已经尝试过预追加和追加,但没有成功。
如有任何帮助,我们将不胜感激。谢谢。
编辑:---------------------------------------- ----------
选定的答案对我来说非常有用,只需一些小操作,所以这里是对我有用的代码:
$('.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">');
});
关于javascript - 在 jQuery 中,如果我有一个开始和结束类,我如何用一个 div 包装多个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25814935/