2016-03-31 3 views
1

Ich brauche ein wenig Verständnis auf diesem pls:Missverständnis append() oder ein treatement in Js/JQuery

Seine Funktion nach Preis Produkt zu sortieren. Das einzige Problem ist, dass ich nicht, warum ich

$length = $('[data-th="Prix : "]').length; 
$dispo = $('.productsDispo'); 
$temp = 0; 
for(var i = 0; i < $length; i++) 
{ 
    for(var j = i; j < $length; j++) 
    { 
     $prixI = $($dispo[i]).find($('[data-th="Prix : "]')).text().slice(0, $($dispo[i]).find($('[data-th="Prix : "]')).text().length-2); 
     $prixJ = $($dispo[j]).find($('[data-th="Prix : "]')).text().slice(0, $($dispo[j]).find($('[data-th="Prix : "]')).text().length-2); 

     if(parseInt($prixI) < parseInt($prixJ)) 
     { 
      $temp = $dispo[i]; 
      $dispo[i] = $dispo[j]; 
      $dispo[j] = $temp; 
     } 
    } 
} 
for(var i = 0; i < $length; i++) 
{ 
    $('.rwd-table tbody').append($dispo[i]) 
} 
+0

Warum sollten Sie den Tisch leeren, um weitere Dinge hinzuzufügen? – senschen

+0

@ssenschen ich füge nicht hinzu, ich sortiere sie –

Antwort

3

Das ist, weil, wie append Werke in jQuery müssen nicht auf meinem Tisch leer, bevor die Produkte

Here is a playground

Dies ist der Code angehängt wird. Von docs:

Wenn ein Element auf diese Weise ausgewählt in einem einzigen Standort an anderer Stelle im DOM eingefügt wird, wird es in das Ziel (nicht geklont) verschoben werden:

Da Sie die Sortierung zu tun und Wenn Sie die ausgewählten DOM-Objekte manipulieren, befinden sie sich bereits in der Tabelle und Sie verschieben sie im Grunde mit append in die Tabelle.

+0

Waow also append ist eine höllische Funktion! Danke, dass du es mir gezeigt hast, ich habe es vorher nur benutzt, um erstellte Elemente einzufügen. –

1

jQuery's append macht keinen Klon eines Elements, das Sie ihm übergeben. Es "schneidet" das Element von seinem alten Standort und "fügt" es in einen neuen ein.

Here ist ein einfacheres Beispiel, das dieses Verhalten zeigt, wenn jemand es illustriert benötigt.

Verwandte Themen