Frage

Ich versuche, durch eine Antwort von einem jQuery Ajax-Request (wieder als XML) zu durchlaufen.

Mit dieser Antwort, Ich baue eine HTML-Tabelle mit 3 Spalten (der Lage, eine unbegrenzte Anzahl von Zeilen). Sobald der 4. XML-Knoten / „Unternehmen“ gefunden wird, sollte es eine neue Zeile in der Tabelle starten. Jede mögliche Hilfe bei der JS zu bestimmen, wann die neue Zeile hinzugefügt werden soll, ist am meisten geschätzt. Dank!

JS Beispiel:

/* jQuery Ajax Call here */

success: function(xml){  
    var trow = $("<tr>");  
    $(xml).find("Company").each(function(index){  
    var cellData = "<td width=\"33%\" valign=\"top\" ><div class=\"container\">"+
"<div class=\"item\"><a href=\"#\" title=\"\" target=\"\">"+ $(this).attr("Name")+ "</a></div>"+  
"<div class=\"description\">"+ $(this).attr("Description") + "</div></div></div></td>";  
    $(cellData).appendTo(trow);   
      });  
      trow.appendTo('#tbl');  
    }  
  });  

});

Beispiel XML-Antwort von Web-Service:

<Companies>
    <Company ID="6" Name="Company name 1" Description="Lorem ipsum" />
    <Company ID="22" Name="Company name 2" Description="Lorem ipsum" />
    <Company ID="28" Name="Company name 3" Description="Lorem ipsum" />
    <Company ID="31" Name="Company name 4" Description="Lorem ipsum" />
</Companies>
War es hilfreich?

Lösung

Der Modulo-Operator ist für Dinge wie diese. Grundsätzlich teilt es eine Zahl durch eine andere Nummer und gibt den Rest. So 1 % 4 = 1 und 4 % 4 = 0 und 8 % 4 = 0:

success: function(xml){
    var trow = $("<tr>"), table = $("#tbl");  
    $(xml).find("Company").each(function(index){  
        var cellData =  "<td width=\"33%\" valign=\"top\" ><div class=\"container\">"+
                        "<div class=\"item\"><a href=\"#\" title=\"\" target=\"\">"+ 
                        $(this).attr("Name")+ "</a></div>" +  
                        "<div class=\"description\">" + $(this).attr("Description") + 
                        "</div></div></div></td>";
        $(cellData).appendTo(trow);   
        if( (index + 1) % 4 == 0) {
            trow.appendTo(table);
            trow = $("<tr>");
        }

      });  
      if(trow.is(':not(:empty)')) trow.appendTo(table);  
    }  
    });
});

ich auch $("#tbl") in einer Variablen gespeichert, um die Anzahl von Anfragen zu reduzieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top