Divulgation: Je suis le mainteneur de BOB.
Il existe une bibliothèque javascript qui rend ce processus beaucoup plus facile appelée BOB .
Pour votre exemple spécifique:
<div><img src="the url" />the name</div>
Cela peut être généré avec BOB par le code suivant.
new BOB("div").insert("img",{"src":"the url"}).up().content("the name").toString()
//=> "<div><img src="the url" />the name</div>"
Ou avec la syntaxe plus courte
new BOB("div").i("img",{"src":"the url"}).up().co("the name").s()
//=> "<div><img src="the url" />the name</div>"
Cette bibliothèque est assez puissante et peut être utilisée pour créer des structures très complexes avec insertion de données (similaire à d3), par exemple:
data = [1,2,3,4,5,6,7]
new BOB("div").i("ul#count").do(data).i("li.number").co(BOB.d).up().up().a("a",{"href": "www.google.com"}).s()
//=> "<div><ul id="count"><li class="number">1</li><li class="number">2</li><li class="number">3</li><li class="number">4</li><li class="number">5</li><li class="number">6</li><li class="number">7</li></ul></div><a href="www.google.com"></a>"
BOB ne prend actuellement pas en charge l'injection des données dans le DOM. C'est sur la todolist. Pour l'instant, vous pouvez simplement utiliser la sortie avec JS normal, ou jQuery, et la placer où vous le souhaitez.
document.getElementById("parent").innerHTML = new BOB("div").insert("img",{"src":"the url"}).up().content("the name").s();
//Or jquery:
$("#parent").append(new BOB("div").insert("img",{"src":"the url"}).up().content("the name").s());
J'ai créé cette bibliothèque parce que je n'étais satisfait d'aucune des alternatives comme jquery et d3. Le code est très compliqué et difficile à lire. Travailler avec BOB est à mon avis, ce qui est évidemment biaisé, beaucoup plus agréable.
BOB est disponible sur Bower , vous pouvez donc l'obtenir en exécutant bower install BOB
.