2014-09-30 14 views
5

Ho un tag di articolo che contiene elementi al suo interno.Come avvolgere tutti gli elementi all'interno di un div dopo un determinato elemento? (JQuery)

Problema: Come posso avvolgere tutti gli elementi all'interno di un div dopo un determinato elemento?

Questo è il codice corrente:

<article> 
    <figure class="thumbnail"> 
      <img src="src_to_img" /> 
    </figure> 

     <h2>Name: Test Name</h2> 
     <div class="description"></div> 
     <div class="content"></div> 
     <div class="content"></div> 
     <div class="more"></div> 
<article> 

Il uscita deve essere:

<article> 
    <figure class="thumbnail"> 
      <img src="src_to_img" /> 
    </figure> 

     <div class="description-wrap"> 
     <h2>Name: Test Name</h2> 
     <div class="description"></div> 
     <div class="content"></div> 
     <div class="content"></div> 
     <div class="more"></div> 
     </div> 
<article> 

Come si può vedere .. il risultato finale ha tutti gli elementi avvolti all'interno class="description-wrap" dopo <figure></figure>

+5

'$ ("figura ~ *") wrapAll ("

")' Se ci sono più, quindi selezionare ogni 'article' e operare su ciascuno di essi. –

+1

concordato con @squint, bella soluzione –

risposta

4

Come suggerito da @squint, jQuery ha un wrapAll metodo che può fare che se combinato con il next-siblings-selector~

$("article > figure ~ *").wrapAll("<div class='description-wrap'></div>") 

tuttavia, questo non ti dà l'output desiderato quando si dispone di più articoli. Invece abbiamo bisogno di usare .each() in questo modo:.

$("article > figure").each(function(){ 
 
    $(this).siblings().wrapAll("<div class='description-wrap'></div>") 
 
});
.description-wrap {border:1px dotted red;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<article> 
 
    <figure class="thumbnail"> 
 
      <img src="src_to_img" /> 
 
    </figure> 
 

 
     <h2>Name: Test Name</h2> 
 
     <div class="description"></div> 
 
     <div class="content"></div> 
 
     <div class="content"></div> 
 
     <div class="more"></div> 
 
</article> 
 
    
 
    <article> 
 
    <figure class="thumbnail"> 
 
      <img src="src_to_img" /> 
 
    </figure> 
 

 
     <h2>Name: Test Name</h2> 
 
     <div class="description"></div> 
 
     <div class="content"></div> 
 
     <div class="content"></div> 
 
     <div class="more"></div> 
 
</article>

+0

Ciao Moob .. Grazie per la risposta ... Ho 4 tag articolo .. quando eseguo il tuo codice .. rovina tutto il css .. conosci un altro tweak a questo? – Redshot

+0

Doh. Non ci ho pensato. Vedi risposta aggiornata. – Moob

+0

Grazie Moob !! Sei fantastico!!!! – Redshot

Problemi correlati