简体   繁体   English

在新的 Div 中包装特定的 Div

[英]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>

As per this thread.根据这个线程。

[id$='someId'] will match all ids ending with someId . [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.

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