javascript - Shorten code to create DOM fragment using jQuery -
i have following code create tree of element i'm using input jstestdriver unit test. followed using jquery? looked jquery.parsehtml function, need extract dom element eventually.
var doc = document.implementation.createhtmldocument(''); var root = doc.createelement('div'); root.appendchild(doc.createtextnode('web ')); var span1 = doc.createelement('span'); span1.setattribute("class", hl_class); span1.appendchild(doc.createtextnode('browsers')); root.appendchild(span1); root.appendchild(doc.createtextnode(' must ')); var span2 = doc.createelement('span'); span2.setattribute("class", hl_class); span2.appendchild(doc.createtextnode('die')); root.appendchild(span2); root.appendchild(doc.createtextnode(''));
it shorted dramatically without jquery: after second line, assign string containing html root.innerhtml
:
var doc = document.implementation.createhtmldocument(''); var root = doc.createelement('div'); root.innerhtml = 'web <span class="' + hl_class + '">browsers</span> must <span class="' + hl_class + '">die</span>';
with jquery, can same thing $()
function, accepts strings containing html fragments , creates dom elements them (and stores top level elements in jquery object returns).
var doc = document.implementation.createhtmldocument(''); var root = $( '<div>' + 'web <span class="' + hl_class + '">browsers</span> must <span class="' + hl_class + '">die</span>' + '</div>', doc)[0];
note jquery version, had pass custom-built document second argument.
both of made bit clearer bit of simple templating (and there many templating implementations choose from). here's very, basic example without templating engine, show benefit:
var doc = document.implementation.createhtmldocument(''); var html = '<div>' + 'web <span class="{hl_class}">browsers</span> ' + 'must <span class="{hl_class}">die</span>' + '</div>'; var root = $(html.replace(/\{hl_class\}/g, hl_class), doc)[0];
ideally, though, you'd load template dynamically file can edit (using build tool embed production), rather string literals.
Comments
Post a Comment