我正在构建一个网络应用程序(使用原型)需要将大块的HTML添加到DOM中。其中大部分是包含各种属性元素的行。
目前,我将空白行的HTML保存在变量中,并且
var blankRow = '<tr><td>'
+'<a href="{LINK}" onclick="someFunc(\'{STRING}\');">{WORD}</a>'
+'</td></tr>';
function insertRow(o) {
newRow = blankRow
.sub('{LINK}',o.link)
.sub('{STRING}',o.string)
.sub('{WORD}',o.word);
$('tbodyElem').insert( newRow );
}
现在这个代码能够正常工作,但是它是否是最佳实践呢?
每当我在页面上更新代码时,我都必须更新 blankRow 中的代码,以便插入的新元素都是相同的。当我有40行 HTML 代码要放在 blankRow 中,并且还必须进行转义时,这样做就很麻烦。
有没有更简单的方法?我考虑过使用 URL 编码,然后在插入之前进行解码,但这仍然意味着需要一个 blankRow,并且需要进行大量转义。
最好的情况是有一种类似于 PHP 等的 EOF 函数。
$blankRow = <<<EOF
text
text
EOF;
这意味着不需要转义,但仍需要一个空行。
在这种情况下你该怎么办?
已解决
最终使用原型中的 DOMBuilder。 不需要其他库:
$w('a div p span img table thead td th tr tbody tfoot input').each(function(e) {
window['$' + e] = function() {
return new Element(e, arguments[0]);
}
});
newPart = $div({id: 'partition-4'})
.insert( $p()
.insert('<b>Stuff</b>')
)
.insert( $p({
id: 'a-p'})
.insert('<b>More stuff</b>')
);
$('parentDiv').insert(newPart);