[英]Wrap div around 2 sequential elements in jQuery
我有这样的重复元素:
<dt class="variationTitle">
Title
</dt>
<dd class="variationName">
Name
</dd>
<dt class="variationTitle">
Title
</dt>
<dd class="variationName">
Name
</dd>
它是一个dt
标签,后跟一个dd
标签,遗憾的是我无法直接更改HTML,但我需要在标题和名称周围包含一个<div class="variation">
,所以它看起来像这样:
<div class="variation">
<dt class="variationTitle">
Title
</dt>
<dd class="variationName">
Name
</dd>
</div>
<div class="variation">
<dt class="variationTitle">
Title
</dt>
<dd class="variationName">
Name
</dd>
</div>
一种选择是迭代每个dt
元素,然后选择相邻的dd
元素并使用.wrapAll()
方法将它们包装起来:
$('dt').each(function() {
$(this).add($(this).next('dd')).wrapAll('<div class="variation"></div>')
});
它的工作原理是因为$(this)
是当前的dt
元素,而.add()
会将下一个dd
元素添加到jQuery对象,而.wrapAll()
将包装jQuery对象中的每个元素。
var divs = $('dt, dd'); for(var i = 0; i < divs.length; i+=2) { divs.slice(i, i+2).wrapAll("<div class='variation'></div>"); }
.variation{ border:1px solid red; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <dt class="variationTitle"> Title </dt> <dd class="variationName"> Name </dd> <dt class="variationTitle"> Title </dt> <dd class="variationName"> Name </dd>
我不是在电脑上所以不能测试这个,但我认为这样可行:
var $set = $('#parentcontainer').children();
for(var i=0, len = $set.length; i < len; i+=2){
$set.slice(i, i+2).wrapAll('<div class="variation"/>');
}
希望你有一个包含你的dt / dd元素的父元素。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.