简体   繁体   English

jQuery - 在特定元素之间插入div

[英]jQuery - Insert a div between specific elements

HTML: 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>

What I want to achieve: 我想要实现的目标:

<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>

I tried the next code, Include all in one, ok, but I can not take D out without duplicating content. 我尝试了下一个代码,包括all in one,好的,但是我不能在没有重复内容的情况下取出D。

jQuery('.row').wrapInner('<div class="newDiv"></div>');

And it is impossible to add HTML without tags close alone. 如果单独关闭标签,则无法添加HTML。

jQuery('.A').before('<div class="newDiv">')
jQuery('.D').before('</div>')

You can 您可以

1) iterate over each row 1)迭代每一行

2) get all div element 2)获取所有div元素

3) select first three using .slice(0,3) 3)使用.slice(0,3)选择前三个

4) wrap using .wrapAll() : 4)使用.wrapAll().wrapAll()

$('.row').each(function(){
   $(this).find("div").slice(0,3).wrapAll("<div class='newDiv'></div>");
});

Working Demo 工作演示

Use your code on each div using .each() like: 使用.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'))
  });
});

SEE DEMO 看看演示

Here is demo: https://jsfiddle.net/7a60jz07/ 这是演示: 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);
})

the simplest way I can think would be to do 我能想到的最简单的方法就是做

$('[class^="row"]').prepend('<div class="newDiv">');
$('[class^="row"]').children().last().before('</div>');

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM