9
votes

jQuery créer de manière dynamique table / tr / td ou etc. APPENDES

Dans un exemple, j'ai cette structure (petit exemple): xxx

dans jQuery je le créerais de manière dynamique: xxx

etc etc etc ... (beaucoup d'autres choses à écrire). Après que je voudrais juste l'ajouter: xxx

y a-t-il d'autre manière d'écrire une telle structure de manière dynamique avec jQuery? C'est un problème pour moi parce que j'ai une grande structure, pas aussi petite que je montrais dans l'exemple. La raison principale est que je veux obtenir une meilleure lisibilité pour moi-même et d'autres développeurs qui conserveront ce code.


0 commentaires

5 Réponses :


17
votes

Pouvez-vous faire un "modèle" de votre chaîne? Si oui, alors rangez-la dans une variable "constante" (par exemple définie dans la portée globale), contenant des espaces réservés pour des variables réelles, telles que {0} , {1} etc., Comme vous l'utiliseriez dans C # 's string.format () méthode.

Donc, vous auriez du code comme celui-ci: xxx

vous le feriez Ensuite, utilisez la mise en œuvre String.Format selon cette réponse: équivalent de la chaîne. Format en jQuery


0 commentaires

25
votes

Voici un exemple simplifié:

  $(function() {
    var tbl = $('<table></table>').attr({ id: "bob" });
    var row = $('<tr></tr>').attr({ class: ["class1", "class2", "class3"].join(' ') }).appendTo(tbl);
    $('<td></td>').text("text1").appendTo(row);
    $('<td></td>').text("Test22").prepend($('<a></a>').attr({ href: "#" }).text("LINK")).appendTo(row);        
    tbl.appendTo($(".somePlaceInHtml"));        
  });


0 commentaires

1
votes

Vous pouvez créer un StringBuilder, un peu comme celui en C #. Voici un extrait de Extensions Telerik pour ASP.NET MVC :

var html = new $.stringBuilder();
for (var i in data)
    html.cat("<tr><td>").cat(i).cat("</td><td></tr>");

$('#element').append(html.string());


2 commentaires

La matrice rejoint était plus rapide dans IE6. Dans les navigateurs actuels, la vitesse est approximativement la même - une concaténation parfois une chaîne est plus rapide, parfois une jonction de matrimonie. Voir mes repères ici: TIPS. Naivist.net/2010/01/19/...


Note prise! Merci - et voici un article supplémentaire que j'ai trouvé sur le sujet: james.padolsey.com/javascript/... - semble que la jointure est la meilleure ;-)



1
votes

ou que vous pouviez au lieu de concaténer des cordes ensemble, utilisez donc le Array.join fonction. xxx


0 commentaires

-2
votes
window.onload = function(){
    var btn = document.createElement("button");
    btn.setAttribute("id", "submit_bttn");
    btn.style.width = 125 + "px";
    btn.style.height = 50 + "px";
    btn.innerHTML = "Submit";
    document.body.appendChild(btn);

    var x = document.getElementById("submit_bttn");
    x.onclick = function(){
        alert("hi");
    }
}

1 commentaires

Golak, bienvenue à. Un texte descriptif à votre code serait bien!