2010-04-16 2 views
0

Juste pourquoi mon style n'est pas appliqué dans la jquery ci-dessous. Il ajoute également seulement la table dans FireFoxjQuery.addClass n'ajoute pas de classe

$("#advisorPerformance").append("<table class='mvc'><tr><th>Advisor</th><th>Packs In</th><th>Pack In (£)</th><th>Packs Out</th><th>Pack Out (£)</th><th>PDQs</th><th>PDQ (£)</th></tr>"); 
$.each(data.AdvisorPerformances, function(i) { 
$("#advisorPerfomance").append("<tr>" + 
"<td>" + data.AdvisorPerformances[i].Advisor + 
"</td>" + 
"<td>" + data.AdvisorPerformances[i].PackInCount + 
"</td>" + 
"<td>" + data.AdvisorPerformances[i].PacksInValue + 
"</td>" + 
"<td>" + data.AdvisorPerformances[i].PacksOutCount + 
"</td>" + 
"<td> " + data.AdvisorPerformances[i].PaymentsInCount + 
"</td>" + 
"<td>" + data.AdvisorPerformances[i].PaymentsInValue + 
"</td>" + 
"</tr>"); 
}); 
$("#advisorPerfomance").append("</table>"); 

$("#advisorPerfomance").addClass("NOTAPPLIEDSTYLE"); 

Existe-t-il une meilleure façon d'ajouter une table?

+3

Vous avez manqué l'adresse

? Ou n'avez-vous pas inclus cette partie dans votre extrait de code? – Harv

+0

ouais ce n'est pas inclus mais c'est là. –

Répondre

1

Vous aurez envie de faire quelque chose comme cela en utilisant .appendTo() pour le rendre plus rapide et plus importante, le travail :)

var tbl = $("<table class='mvc'><tr><th>Advisor</th><th>Packs In</th><th>Pack In (£)</th><th>Packs Out</th><th>Pack Out (£)</th><th>PDQs</th><th>PDQ (£)</th></tr></table>") 
$.each(data.AdvisorPerformances, function(i) { 
    tbl.append("<tr>" + 
    "<td>" + data.AdvisorPerformances[i].Advisor + "</td>" + 
    "<td>" + data.AdvisorPerformances[i].PackInCount + "</td>" + 
    "<td>" + data.AdvisorPerformances[i].PacksInValue + "</td>" + 
    "<td>" + data.AdvisorPerformances[i].PacksOutCount + "</td>" + 
    "<td>" + data.AdvisorPerformances[i].PaymentsInCount + "</td>" + 
    "<td>" + data.AdvisorPerformances[i].PaymentsInValue + "</td>" + 
    "</tr>"); 
}); 
tbl.appendTo("#advisorPerformance"); 
$("#advisorPerfomance").addClass("NOTAPPLIEDSTYLE"); 

a.append() ne pas seulement ajouter du texte et de le rendre html, il est la création d'éléments DOM, donc votre première ligne est en train de créer un <table> ... donc à partir de ce moment vous aurez des résultats imprévisibles. Au lieu de cela, ajoutez soit des éléments valides complets, soit construisez votre table comme ci-dessus, puis ajoutez-la au DOM. La méthode ci-dessus crée la table en dehors du DOM dans un fragment de document puis l'ajoute, c'est à la fois plus rapide et un peu plus propre. Une fois terminé, il ajoute la table entière à #advisorPerformance.

0

J'ai remarqué que certains de vos codes utilisent "advisorPerfomance", tandis que d'autres utilisent "advisorPerformance". Je suppose que le sélecteur JQuery auquel vous essayez d '"ajouterClasse" donne un tableau de longueur nulle, donc il ajoute la classe à aucun élément. En bref, assurez-vous toujours que le sélecteur renvoie ce que vous pensiez que vous étiez en train de sélectionner.

+0

Bon point. Le code actuel est-il mal orthographié comme dans l'exemple? Voir ci-dessous. $ .each (data.Advisorperformances, function (i) { $ ("# advisorPerfomance"). Append ("

" + – Harv

+0

hmm faute d'orthographe est un hareng rouge.J'ai changé ce que je pensais être toutes les fautes d'orthographe afin de ne pas avoir l'air stupide, j'ai échoué, encore une fois :) –

Questions connexes