[英]Wrapping Specific Divs in a New Div
So I've got an issue that I can't get my head around on how to achieve it, tried a few different methods on CodePen but not really sure where to start so any advice would be awesome.所以我遇到了一个问题,我无法理解如何实现它,在 CodePen 上尝试了几种不同的方法,但不确定从哪里开始,所以任何建议都会很棒。
I want to find all divs that end with the letter S and wrap them in a new div, then the same for the letters R and L.我想找到所有以字母 S 结尾的 div 并将它们包装在一个新的 div 中,然后对于字母 R 和 L 也是如此。
The real world scenario is wanting to group jean sizes together in to 'Small', 'Regular' and 'Long' sections on a product page to achieve the look below:现实世界的场景是希望将牛仔裤尺寸组合到产品页面上的“小”、“常规”和“长”部分,以实现以下外观:
<div class="small__stuff"></div>
<div class="reg__stuff"></div>
<div class="large__stuff"></div>
<div class="content__wrapper">
<div class="content__container">
<div class="content__item">
<span>30S</span>
</div>
<div class="content__item">
<span>30R</span>
</div>
<div class="content__item">
<span>30L</span>
</div>
<div class="content__item">
<span>32S</span>
</div>
<div class="content__item">
<span>32R</span>
</div>
<div class="content__item">
<span>32L</span>
</div>
<div class="content__item">
<span>34S</span>
</div>
<div class="content__item">
<span>34R</span>
</div>
<div class="content__item">
<span>34L</span>
</div>
<div class="content__item">
<span>36S</span>
</div>
<div class="content__item">
<span>36R</span>
</div>
<div class="content__item">
<span>36L</span>
</div>
<div class="content__item">
<span>38S</span>
</div>
<div class="content__item">
<span>38R</span>
</div>
<div class="content__item">
<span>38L</span>
</div>
<div class="content__item">
<span>40S</span>
</div>
<div class="content__item">
<span>40R</span>
</div>
<div class="content__item">
<span>40L</span>
</div>
</div>
</div>
CodePen: https://codepen.io/nickelse/pen/dyPGvJm代码笔: https ://codepen.io/nickelse/pen/dyPGvJm
You can try with .each()
, .endsWith()
and .wrap()
.您可以尝试使用
.each()
、 .endsWith()
和.wrap()
。
Demo:演示:
$('.content__item').each(function(){ var text = $(this).find('span').text(); if(text.endsWith('S')){ $(this).wrap("<div class='parent_S'></div>") ; } else if(text.endsWith('R')){ $(this).wrap("<div class='parent_R'></div>") ; } else if(text.endsWith('L')){ $(this).wrap("<div class='parent_L'></div>") ; } });
.parent_S{ color: red; font-size: 12px; } .parent_R{ color: green; } .parent_L{ color: blue; font-size: 18px; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="small__stuff"></div> <div class="reg__stuff"></div> <div class="large__stuff"></div> <div class="content__wrapper"> <div class="content__container"> <div class="content__item"> <span>30S</span> </div> <div class="content__item"> <span>30R</span> </div> <div class="content__item"> <span>30L</span> </div> <div class="content__item"> <span>32S</span> </div> <div class="content__item"> <span>32R</span> </div> <div class="content__item"> <span>32L</span> </div> <div class="content__item"> <span>34S</span> </div> <div class="content__item"> <span>34R</span> </div> <div class="content__item"> <span>34L</span> </div> <div class="content__item"> <span>36S</span> </div> <div class="content__item"> <span>36R</span> </div> <div class="content__item"> <span>36L</span> </div> <div class="content__item"> <span>38S</span> </div> <div class="content__item"> <span>38R</span> </div> <div class="content__item"> <span>38L</span> </div> <div class="content__item"> <span>40S</span> </div> <div class="content__item"> <span>40R</span> </div> <div class="content__item"> <span>40L</span> </div> </div> </div>
[id$='someId']
will match all ids ending withsomeId
.[id$='someId']
将匹配所有以someId
结尾的 ID。
So basically in your case:所以基本上在你的情况下:
const sDivs = document.querySelectorAll('div[id$="S"]'); // Capital S
const sDivsContainer = document.querySelector('.small__stuff');
[...sDivs].forEach(div => sDivsContainer.appendChild(div));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.