2016-07-11 8 views
0

Guten Tag! Ich habe diesen Code unten, der eine Tabelle anzeigt und es funktioniert. Ich kann die Tabelle und ihren Inhalt anzeigen. Hier ist der Code:JQuery kann nicht auf Elemente zugreifen, die mit DOM erstellt wurden

 if(xhr.readyState == 4 && xhr.status == 200) { 
     var data = JSON.parse(xhr.responseText); 
     var x = 0; 
     var table = document.getElementById("tblData"); 

     for(x=0; x<data.length; x++) { 

      dataInstance = data[x].split('*'); 

      var row = document.createElement("tr"); 
      var td1 = document.createElement("td"); 
      var td2 = document.createElement("td"); 
      var td3 = document.createElement("td"); 
      var td4 = document.createElement("td"); 
      var td5 = document.createElement("td"); 
      var td6 = document.createElement("td"); 
      var td7 = document.createElement("td");; 

      var cb = document.createElement('input'); 
      cb.setAttribute("type", "checkbox"); 

      var tn1 = document.createTextNode(dataInstance[1]); 
      var tn2 = document.createTextNode(dataInstance[2]); 
      var tn3 = document.createTextNode(dataInstance[3]); 
      var tn4 = document.createTextNode(dataInstance[4]); 
      var tn5 = document.createTextNode(dataInstance[5]); 
      var tn6 = document.createTextNode(dataInstance[6]); 

      td1.appendChild(cb); 
      td2.appendChild(tn1); 
      td3.appendChild(tn2); 
      td4.appendChild(tn3); 
      td5.appendChild(tn4); 
      td6.appendChild(tn5); 
      td7.appendChild(tn6); 

      row.appendChild(td1); 
      row.appendChild(td2); 
      row.appendChild(td3); 
      row.appendChild(td4); 
      row.appendChild(td5); 
      row.appendChild(td6); 
      row.appendChild(td7); 

      table.appendChild(row); 
     } 
    } 

Aber dann, wenn ich versuche, einige Farben Aufstellen abwechselnd auf meinem Tisch mit JQuery, kann es nicht um die Zeilen finden, die erstellt wurden DOM verwenden. Nur die Tabellenüberschrift der Tabelle, die sich in meinem HTML-Code befindet, ist mit Farbe gefüllt. Dies ist mein JQuery-Code:

$("#tblData tr:even").css("background-color", "pink"); 
$("#tblData tr:odd").css("background-color", "yellow"); 

Können Sie mir bitte helfen? Vielen Dank im Voraus! Jede Hilfe wird geschätzt!

+1

Warum verwenden Sie [CSS] (http://quirksmode.org/css/selectors/nthchild.html) dafür nicht? 'tr: nth-child (gerade) {background-color: pink} tr: nth-child (ungerade) {background-color: yellow}' – Andreas

+0

Ich habe das berücksichtigt, aber dann habe ich auch andere Codes, die diese Art von brauchen Lösung. Wie auch immer, danke für deinen Vorschlag. – Jjjjjjjjjj

+0

Wann wird dieser jQuery-Code ausgeführt? Ihr Code zum Hinzufügen von Zeilen sieht so aus, als ob er hinzugefügt wird, nachdem eine AJAX-Anfrage beendet wurde. Das passiert asynchron. Sie müssen sicherstellen, dass der jQuery-Code nach Abschluss dieses Codes ausgeführt wird. – ADyson

Antwort

0

Die Antwort auf meine Frage ist die Ausführung von JQuery-Code nach dem Erstellen von Elementen.