【发布时间】:2015-12-23 10:40:45
【问题描述】:
################## SIMPLIFIED VERSION ##################
我需要什么:
$('body').appendOrReplace('<div id="foo"></div>')
第一次,结果是:
<body><div id="foo"></div></body>
现在,如果我重新运行相同的代码,结果应该不会改变!
如果 DOM 中有任何子元素要追加,如 $('body').appendOrReplace('<div id="foo"><p id="bar"></p></div>'),则 appendOrReplace 必须只取第一个元素的 id。
问题是:参数是一个字符串(不是一个dom),所以我不能轻易得到id,来测试是否已经存在。
################## MY USE CASE (EDIT) ##################
我使用模板 JST(带有 Rails),所以我有这个代码:
$('#page').append(app.JST('path/to/template'));
JST 模板可以返回一整页的 html(很长的未来 HTML 字符串)。
我需要确保模板的唯一性。每个模板都以具有唯一 ID 的元素开头。
所以当且仅当元素不存在时,我需要一个方法 jquery 来追加这个完整的 DOM,或者如果已经存在则替换。
【问题讨论】:
-
可以用jQuery创建DOM元素,得到
id:$('<div id="foo"><p id="bar"></p></div>').attr('id') -
如果我的字符串是一个很长的字符串,包含很多 DOM(比如在我的例子中,我使用模板 JST),那么创建 jquery 元素只是为了获取 id 不是一个好主意。
标签: javascript jquery html replace append