2016-11-21 3 views
4

Können sagen, das ist mein HTMLWrapAll() auf mehrere Klassen mit mehreren Aussehen

<ul class="products> 
 
<li class="product"> 
 
<div class="product-title></div> 
 
<div class="product-thumbnail></div> 
 
<div class="product-price></div> 
 
<div class="product-discription></div> 
 
</li> 
 
<li class="product"> 
 
<div class="product-title></div> 
 
<div class="product-thumbnail></div> 
 
<div class="product-price></div> 
 
<div class="product-discription></div> 
 
</li> 
 
</ul>

Jetzt habe ich .product-thumbnail und .product-price in

<div class="left"></div> 

Like this

wickeln wollen

<ul class="products> 
 
     <li class="product"> 
 
     <div class="product-title></div> 
 
     <div class="left"> 
 
     <div class="product-thumbnail></div> 
 
     <div class="product-price></div> 
 
     </div> 
 
     <div class="product-discription></div> 
 
     </li> 
 

 
     <li class="product"> 
 
     <div class="product-title></div> 
 
     <div class="left"> 
 
     <div class="product-thumbnail></div> 
 
     <div class="product-price></div> 
 
     </div> 
 
     <div class="product-discription></div> 
 
     </li> 
 
    </ul>

Dieser Code funktioniert der Trick, wenn ich nur ein Listenelement hatte

$(".product-thumbnail, .product-price").wrapAll("<div class='left'></div>"); 

Ich habe versucht, eine each() auf .product-thubnail und .product-price aber ohne Erfolg ..

Hat jemand wissen, wie ich das machen könnte oder wie es mit each() gemacht werden könnte?

+0

Sie benötigen eine Code-Beispiele, um aufzuräumen und ersetzen alle fehlenden Schließen Anführungszeichen Sie – j08691

+0

ausgelassen das ist, wie Frage stellen sollte. :) – Mahi

Antwort

3

Iterieren über die .product-title mit each() Methode und kombinieren mit dem nächsten Element sofort mit add() Methode.

$('.product-title').each(function() { 
 
    $(this).add($(this).next()).wrapAll('<div class="left"></div>') 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul class="products"> 
 
    <li class="product"> 
 
    <div class="product-title"></div> 
 
    <div class="product-thumbnail"></div> 
 
    <div class="product-price"></div> 
 
    <div class="product-discription"></div> 
 
    </li> 
 
    <li class="product"> 
 
    <div class="product-title"></div> 
 
    <div class="product-thumbnail"></div> 
 
    <div class="product-price"></div> 
 
    <div class="product-discription"></div> 
 
    </li> 
 
</ul>


Oder iterieren die li und beide Klassen innerhalb des Elements erhalten, indem den Kontext bereitstellt.

$('.product').each(function() { 
 
    $('.product-title,.product-thumbnail', this).wrapAll('<div class="left"></div>') 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul class="products"> 
 
    <li class="product"> 
 
    <div class="product-title"></div> 
 
    <div class="product-thumbnail"></div> 
 
    <div class="product-price"></div> 
 
    <div class="product-discription"></div> 
 
    </li> 
 
    <li class="product"> 
 
    <div class="product-title"></div> 
 
    <div class="product-thumbnail"></div> 
 
    <div class="product-price"></div> 
 
    <div class="product-discription"></div> 
 
    </li> 
 
</ul>

+0

Danke !, Die iterate über die Liste Artikel funktioniert super! Ich werde Ihre Antwort akzeptieren, wenn die 4 Minuten vorbei sind :) – Swolschblauw

+0

Vielen Dank für Ihre großartige Antwort. Warum hast du 'this' in deinem zweiten Beispiel benutzt? – Mahi

+1

@Mahi: zum Finden eines Elements innerhalb des 'this' Kontexts ..... welches Suchelement innerhalb des aktuellen' li' –