包裹成对的元素
Wrap pairs of elements?
如果您有以下代码:
<div class="parent">
<div class="1a"></div>
<div class="1b"></div>
<div class="2a"></div>
<div class="2b"></div>
<div class="3a"></div>
<div class="3b"></div>
</div>
有没有一种有效/简单的方法将一个新的div包装在每个a+b周围,使其看起来像这样:
<div class="parent">
<div class="new-1">
<div class="1a"></div>
<div class="1b"></div>
</div>
<div class="new-2">
<div class="2a"></div>
<div class="2b"></div>
</div>
<div class="new-3">
<div class="3a"></div>
<div class="3b"></div>
</div>
</div>
例如,我可以说这样的话吗:
用<div class="new-(incremental variable)"></div>
(新的包装div需要有一个唯一的类)
这样?
$('.parent > div:odd').each(function(i){
$(this)
.prev()
.addBack()
.wrapAll($('<div/>',{'class': 'new-' + (i+1)}));
});
演示
根据索引(基于0)选择奇数,即1、3、5等;迭代奇数得到相对于奇数的prev元素(需要配对),使用和SelfaddBack也选择该元素,然后对该对使用wrapAll。
如果你想忽略它们中的前x个,那么就这样做:
$('.parent > div:gt(' + (x-1) + '):odd').each(function(i){
$(this)
.prev()
.addBack()
.wrapAll($('<div/>',{'class': 'new-' + (i+1)}));
})
演示
您可以直接使用jQueries Wrap函数。看看这里!
http://api.jquery.com/wrap/
我不确定您希望使用新的包装器div实现什么,但CSS中的第n个子项可能有用。试试这样的东西:
div.parent div {width:50%;}
div.parent div:nth-child(odd) {clear:both; float:left;}
div.parent div:nth-child(even) {float:right;}
这将为您提供并排的div对。
相关文章:
- CKEditor Widget-阻止编辑可编辑元素本身
- 如何设置html元素填充的动画
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 使用clickToggle并在单击另一个元素时关闭元素
- Wordpress TinyMCE在从文本切换到视觉时,如果锚标记包裹块元素,则会删除锚标记
- 包裹在较高的元素上
- 根据其同级元素包裹元素
- 如何动态地将元素包裹在身体内部
- 如何使滑块在元素结束时继续循环(如何包裹滑块)
- 包裹成对的元素
- 在前一个元素jQuery的锚中包裹图像
- 根据父元素和/或类,用新元素包裹元素
- 用ng-if包裹子元素
- Jquery在表单中包裹一组特定的元素
- TinyMCE外层包裹选定的元素
- jquery点击事件只有当被包裹的元素被点击
- jQuery在很多元素周围包裹元素
- 在一个循环中包裹li元素
- JQuery收集一组元素,将每个元素展开,然后将所有元素包裹在新元素中