Divulgación: soy el mantenedor de BOB.
Existe una biblioteca de JavaScript que facilita mucho este proceso llamada BOB .
Para su ejemplo específico:
<div><img src="the url" />the name</div>
Esto se puede generar con BOB mediante el siguiente código.
new BOB("div").insert("img",{"src":"the url"}).up().content("the name").toString()
//=> "<div><img src="the url" />the name</div>"
O con la sintaxis más corta
new BOB("div").i("img",{"src":"the url"}).up().co("the name").s()
//=> "<div><img src="the url" />the name</div>"
Esta biblioteca es bastante poderosa y se puede usar para crear estructuras muy complejas con inserción de datos (similar a d3), por ejemplo:
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>"
Actualmente, BOB no admite la inyección de datos en el DOM. Esto está en el todolista. Por ahora, simplemente puede usar la salida junto con JS normal o jQuery, y colocarla donde desee.
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());
Hice esta biblioteca porque no estaba satisfecho con ninguna de las alternativas como jquery y d3. El código es muy complicado y difícil de leer. Trabajar con BOB es, en mi opinión, que obviamente está sesgado, mucho más agradable.
BOB está disponible en Bower , por lo que puede obtenerlo ejecutándolo bower install BOB
.