HTML:
<div class="row">
<div class="A"></div>
<div class="B"></div>
<div class="C"></div>
<div class="D"></div>
</div>
<div class="row">
<div class="A"></div>
<div class="B"></div>
<div class="C"></div>
<div class="D"></div>
</div>
我想要实现的目标:
<div class="row">
<div class="newDiv">
<div class="A"></div>
<div class="B"></div>
<div class="C"></div>
</div>
<div class="D"></div>
</div>
<div class="row">
<div class="newDiv">
<div class="A"></div>
<div class="B"></div>
<div class="C"></div>
</div>
<div class="D"></div>
</div>
我尝试了下一个代码,包括all in one,好的,但我不能在没有重复内容的情况下将D取出来。
jQuery('.row').wrapInner('<div class="newDiv"></div>');
如果单独关闭标签,则无法添加HTML。
jQuery('.A').before('<div class="newDiv">')
jQuery('.D').before('</div>')
答案 0 :(得分:7)
你可以
1)遍历每一行
2)获取所有div元素
3)使用.slice(0,3)
4)使用.wrapAll()
包裹:
$('.row').each(function(){
$(this).find("div").slice(0,3).wrapAll("<div class='newDiv'></div>");
});
<强> Working Demo 强>
答案 1 :(得分:1)
使用.each()
在每个div上使用您的代码,例如:
$(document).ready(function(){
$("div[class^=row]").each(function(){
$(this).wrapInner('<div class="newDiv"></div>');
$(this).find(".A").before('<div class="conteneur-produit">')
$(jQuery(this).find(".D")).insertAfter($(this).find('.newDiv'))
});
});
答案 2 :(得分:1)
以下是演示:https://jsfiddle.net/7a60jz07/
$('.row').each(function(){
var newdiv = $('<div class="newDiv">');
var lastdiv = $(this).children().last();
$(this).append(newdiv);
newdiv.append($(this).children());
newdiv.after(lastdiv);
})
答案 3 :(得分:0)
我能想到的最简单的方法就是
$('[class^="row"]').prepend('<div class="newDiv">');
$('[class^="row"]').children().last().before('</div>');