2016-04-07 4 views
0

Was ich versuche, Fehler zu erreichen, und aus irgendeinem Grund ist ..jedes Kinder Element erhalten, die eine Klasse hat und einsetzen, bevor die Mutter

Mit diesem Code-Struktur:

<div class="catProductAttributeGroup"> 
    <div class="catProdAttributeTitle">TITLE 1</div> 
    Content for class "catProductAttributeGroup" Goes Here </div> 
<div class="catProductAttributeGroup"> 
    <div class="catProdAttributeTitle">TITLE 2</div> 
    Content for class "catProductAttributeGroup" Goes Here </div> 
<div class="catProductAttributeGroup"> 
    <div class="catProdAttributeTitle">TITLE 3</div> 
    Content for class "catProductAttributeGroup" Goes Here </div> 

TO LIKE THIS DISPLAY : Ich möchte sicherstellen, dass es einen Titel zu insertBefore() gibt; deshalb habe ich die erste Zeile unter der Funktionszeile.

<div class="catProdAttributeTitle">TITLE 1</div> 
<div class="catProductAttributeGroup"> Content for class "catProductAttributeGroup" Goes Here </div> 
<div class="catProdAttributeTitle">TITLE 2</div> 
<div class="catProductAttributeGroup"> Content for class "catProductAttributeGroup" Goes Here </div> 
<div class="catProdAttributeTitle">TITLE 3</div> 
<div class="catProductAttributeGroup"> Content for class "catProductAttributeGroup" Goes Here </div> 

dies mit:

$(".catProductAttributeGroup").each(function() { 
    if ($(this).find(".catProdAttributeTitle").length > 0) { 
     $(".catProdAttributeTitle").insertBefore($(".catProductAttributeGroup")); 
    } 
}); 

ABER ALLE TITEL AUF DER SPITZE DES ERSTEN ELTERN LIKE THIS RENDERING:

, um dieses DANK helfen mir
<div class="catProdAttributeTitle">TITLE 1</div> 
<div class="catProdAttributeTitle">TITLE 2</div> 
<div class="catProdAttributeTitle">TITLE 3</div> 
<div class="catProductAttributeGroup"> Content for class "catProductAttributeGroup" Goes Here </div> 
<div class="catProductAttributeGroup"> Content for class "catProductAttributeGroup" Goes Here </div> 
<div class="catProductAttributeGroup"> Content for class "catProductAttributeGroup" Goes Here </div> 

Bitte jemand!

Antwort

2

Verwenden Sie $(this) innerhalb der each, um auf das aktuelle Element zu verweisen.

$('.catProdAttributeTitle').each(function() { 
    $(this).insertBefore($(this).parent()); 
}); 

Ist das Element verschachtelt ist, verwenden Sie closest() statt parent().

$(this).insertBefore($(this).closest('.catProductAttributeGroup')); 

Demo

+0

Dies ist ein Systemcode erzeugt und so hatte ich darauf achten, mein Fehler! Ich habe gerade gemerkt, dass die Tittle Div in drei anderen Divs eingepackt ist, wie .catProductAttributeGroup> .owl-stage-outer> .owl-stage> **. CatProdAttributeTitle ** denkst du, es gibt noch eine andere Methode, die sie noch auf den Stapel legen first .catProductAttributeGroup – Skwashy

+1

@Skwashy Ja, benutze '$ (this) .insertBefore ($ (this) .closes ('. catProductAttributeGroup'));' – Tushar

Verwandte Themen