简体   繁体   English

如何在jQuery的每个循环中包装全部

[英]How to wrapAll in each loop in jquery

I have some html div like this: 我有一些这样的html div

<div class="mainClass class_1"></div>
<div class="mainClass class_1"></div>
<div class="mainClass class_2"></div>
<div class="mainClass class_2"></div>
<div class="mainClass class_2"></div>
<div class="mainClass class_2"></div>
<div class="mainClass class_3"></div>
<div class="mainClass class_3"></div>
<div class="mainClass class_3"></div>
<div class="mainClass class_4"></div>
<div class="mainClass class_4"></div>

I want to have something like that: 我想要这样的东西:

<div class="wrapper">
  <div class="mainClass class_1"></div>
  <div class="mainClass class_1"></div
</div>
<div class="wrapper">
   <div class="mainClass class_2"></div>
   <div class="mainClass class_2"></div>
   <div class="mainClass class_2"></div>
   <div class="mainClass class_2"></div>
</div>
<div class="wrapper">
   <div class="mainClass class_3"></div>
   <div class="mainClass class_3"></div>
   <div class="mainClass class_3"></div>
</div>
<div class="wrapper">
   <div class="mainClass class_4"></div>
   <div class="mainClass class_4"></div>
</div>

How can I use each loop and wrapAll (or something else) to add this wrapper in in jQuery ? 如何使用每个循环和wrapAll (或其他方式)在jQuery中添加此包装器? I don't want to wrapAll manually for every class (class_1, class_2, class_3 ... ). 我不想wrapAll手动为每个类(class_1,class_2,class_3 ...)。

Thanks for your help! 谢谢你的帮助!

You could use the jQuery function wrapAll and wrapper every element with the same class, check the example bellow: 您可以使用jQuery函数wrapAll并包装具有相同类的每个元素,请检查以下示例:

 $(".content > div").each(function() { $(".content > ." + this.className).wrapAll("<div class='wrapper' />"); }); 
 div:not(.content):not(.wrapper){ height: 10px; background: #0fc0fc; margin-bottom: 10px; } .wrapper { border: 1px solid #ff0000; margin-bottom: 20px; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="content"> <div class="class_1"></div> <div class="class_1"></div> <div class="class_2"></div> <div class="class_2"></div> <div class="class_2"></div> <div class="class_2"></div> <div class="class_3"></div> <div class="class_3"></div> <div class="class_3"></div> <div class="class_4"></div> <div class="class_4"></div> </div> 

You have to extract the class which groups them like class_1, class_2 etc. then in the each loop you can .wrapAll() them: 您必须提取将它们分组的类,例如class_1, class_2等,然后在每个循环中可以.wrapAll()它们进行.wrapAll()

 $('.mainClass').each(function(i, div){ var clazz = this.className.split(/\\s/)[1]; if(!$(this).parent().is('.wrapper')){ $(`.${clazz}`).wrapAll($('<div/>',{ class: 'wrapper'})) } }) 
 .wrapper{ background:yellow; margin:10px; padding:5px; } .mainClass{ height: 20px; } .class_1{ border:solid 1px purple; margin-bottom:10px;} .class_2{ border:solid 1px orange; margin-bottom:10px;} .class_3{ border:solid 1px green; margin-bottom:10px;} .class_4{ border:solid 1px red; margin-bottom:10px;} 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="mainClass class_1"></div> <div class="mainClass class_1"></div> <div class="mainClass class_2"></div> <div class="mainClass class_2"></div> <div class="mainClass class_2"></div> <div class="mainClass class_2"></div> <div class="mainClass class_3"></div> <div class="mainClass class_3"></div> <div class="mainClass class_3"></div> <div class="mainClass class_4"></div> <div class="mainClass class_4"></div> 

Hi why not select all div's using jquery and use loop on them to get set them up accordingly.Eg 嗨,为什么不使用jquery选择所有div并在其上使用循环来进行相应设置。

<div class="mainClass class_1"></div>
<div class="mainClass class_1"></div>
<div class="mainClass class_2"></div>
<div class="mainClass class_2"></div>
<div class="mainClass class_2"></div>
<div class="mainClass class_2"></div>
<div class="mainClass class_3"></div>
<div class="mainClass class_3"></div>
<div class="mainClass class_3"></div>
<div class="mainClass class_4"></div>
<div class="mainClass class_4"></div>

now perform jquery operation 现在执行jQuery操作

$cont = $('div');
var content1 = '<div class="wrapper"><div>';
$.each($cont, function(k,v) {
   if($(v).hasClass('class_1')){
        //content for div with class_1
   } else if($(v).hasClass('class_2')) {
       //content for div with class_2
   } else {
       //include rest content
   }
});

This is just a rough overview how you can create your custom format content Hope it helps 这只是一个粗略的概述,您可以如何创建自定义格式的内容,希望对您有所帮助

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

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