Tiết lộ: Tôi là người duy trì BOB.
Có một thư viện javascript giúp quá trình này dễ dàng hơn rất nhiều được gọi là BOB .
Đối với ví dụ cụ thể của bạn:
<div><img src="the url" />the name</div>
Điều này có thể được tạo với BOB bằng đoạn mã sau.
new BOB("div").insert("img",{"src":"the url"}).up().content("the name").toString()
//=> "<div><img src="the url" />the name</div>"
Hoặc với cú pháp ngắn hơn
new BOB("div").i("img",{"src":"the url"}).up().co("the name").s()
//=> "<div><img src="the url" />the name</div>"
Thư viện này khá mạnh và có thể được sử dụng để tạo các cấu trúc rất phức tạp có chèn dữ liệu (tương tự như d3), ví dụ:
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 hiện không hỗ trợ đưa dữ liệu vào DOM. Đây là trên máy chơi chữ. Hiện tại, bạn có thể chỉ cần sử dụng đầu ra cùng với JS thông thường hoặc jQuery và đặt nó ở bất cứ đâu bạn muốn.
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());
Tôi tạo thư viện này vì tôi không hài lòng với bất kỳ lựa chọn thay thế nào như jquery và d3. Mã rất phức tạp và khó đọc. Làm việc với BOB theo ý kiến của tôi, điều này rõ ràng là thiên vị, dễ chịu hơn rất nhiều.
BOB có sẵn trên Bower , vì vậy bạn có thể lấy nó bằng cách chạy bower install BOB
.