2015-04-23 9 views
5

Ich mache eine Sortierung auf div, aber nicht in der Lage, eine Sortierung durchzuführen. Ich verwende jQuery.fn.sortElements. Unten ist das HTML.Sortierung führt nicht in jquery

<div id="sortList"> 
    <div class="list" style="display: block;"> 
     <a onclick="openInfoWindow("10"); return false;" href="#"></a> 
     <div class="imgClass"> 
      <a onclick="openInfoWindow("10"); return false;" href="#"> 
      <img class="innerImg" alt="" src="img"> 
      </a> 
     </div> 
     <div class="inner"> 
      <div class="name">edata</div> 
     </div> 
    </div> 

    <div class="list" style="display: block;"> 
     <a onclick="openInfoWindow("10"); return false;" href="#"></a> 
     <div class="imgClass"> 
      <a onclick="openInfoWindow("10"); return false;" href="#"> 
      <img class="innerImg" alt="" src="img"> 
      </a> 
     </div> 
     <div class="inner"> 
      <div class="name">fdata</div> 
     </div> 
    </div> 

    <div class="list" style="display: block;"> 
     <a onclick="openInfoWindow("10"); return false;" href="#"></a> 
     <div class="imgClass"> 
      <a onclick="openInfoWindow("10"); return false;" href="#"> 
      <img class="innerImg" alt="" src="img"> 
      </a> 
     </div> 
     <div class="inner"> 
      <div class="name">cdata</div> 
     </div> 
    </div> 
</div> 

Unten ist der Jquery-Code, ich habe eine Warnung platziert, um das Ergebnis zu sehen, aber nichts passiert.

$('.sortList').sortElements(function(a, b){ 
       alert($(a).find(".list").children(".inner").find(".name").text().toLowerCase())     
        return $(a).find(".list").children(".inner").find(".name").text().toLowerCase() > $(a).find(".list").children(".inner").find(".name").text().toLowerCase() ? 1 : -1; 
       }); 

Jede Hilfe ist sehr viel

geschätzt
+0

Der Selektor '.sortList' findet jedes Element mit der Klasse 'sortList', Sie haben jedoch keine Elemente mit dieser Klasse. – Eterm

+0

Ich denke, Sie sollten die Funktion sortElements für die Elemente aufrufen, die Sie sortieren möchten und nicht ihren Container ... $ ('. SortList'). Children ('. List') sortElements (function (a, b) –

+0

Sie tun nicht eine Klasse namens sortList aber und ID – bmscomp

Antwort

4

Versuchen Sie folgendes:

$('#sortList .list').sortElements(function(a, b){ 
     return $(a).children(".inner").find(".name").text().toLowerCase() > $(b).children(".inner").find(".name").text().toLowerCase() ? 1 : -1; 
}); 

Siehe Fiddle

+0

toll! wie immer, kurze & genaue Lösungen – Vikrant

+0

@ haim770 danke es funktioniert :) –

2

Es gibt ein paar Probleme gab.

  • $ (‘sortList ') sollte $ sein (' # so rtList '),' # 'sucht nach IDs mit' sortList 'und'. ' sucht nach Klassen mit 'sortList'
  • Sie müssen sortElements in der Liste der Elemente aufrufen, nicht den Container, also $ ('. sortList'). sortElements sollte $ ('# sortList') sein. children (". list") .sortElements
  • in der Rücksendeanweisung der Vergleichsfunktion müssen Sie a und b vergleichen, nicht mit
  • auch in der Return-Anweisung, die Sie jetzt nicht suchen müssen ".list" können Sie gerade gehen zu '.inner'

Bitte sehen JSFiddle: http://jsfiddle.net/qwmq61o5/1/

$('#sortList').children(".list").sortElements(function(a, b) { 
    return $(a).children(".inner").find(".name").text().toLowerCase() > $(b).children(".inner").find(".name").text().toLowerCase() ? 1 : -1; 
}); 
Verwandte Themen