javascript - jQuery : append or replace automatic?

标签 javascript jquery html replace append

################## SIMPLIFIED VERSION  ##################

我需要什么:

$('body').appendOrReplace('<div id="foo"></div>')

第一次的结果是:

<body><div id="foo"></div></body>

现在,如果我重新运行相同的代码,结果应该不会改变!

如果 DOM 中有任何要 append 的子元素,如 $('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( future HTML 的一个很长的字符串)。

我需要确保模板的唯一性。每个模板都以具有唯一 ID 的元素开头。

所以我需要一个 jquery 方法来 append 这个完整的 DOM,当且仅当元素不存在时,或者如果已经存在则替换。

最佳答案

你只需要这样:

if ($("#foo").length == 1)
  // Replace
else
  // Append

您可以创建这样的函数:

$.fn.appendOrReplace = function (param) {
  // do that
}

接下来你可以做的是:

var contentFoo = '<div id="foo"></div>';

if ($("#foo").length == 1)
  $('body').replaceWith(contentFoo);
else
  $('body').append(contentFoo);

关于javascript - jQuery : append or replace automatic?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32784870/

相关文章:

javascript - 如何创建一个 URL,当点击该 URL 时批准或将名称添加到 firebase 中的列表?

javascript - 替代使用 postMessage() 连续消息弹出来控制状态

javascript - 如何增加这种弹性动画效果的振幅?

javascript - 表的jquery映射函数的使用

javascript - 如何在 HTML5 中读取内联 SVG 中的自定义命名空间节点?

javascript - 正则表达式 - 避免表达式中出现字符串

javascript - 使用 JavaScript 将数组中的数字打乱,使得没有两个相邻数字相同

c# - 使用 ASP.NET MVC 捆绑和缩小时出现奇怪的 JavaScript 错误

html - 将滚动条添加到模态窗口

jquery - 计算 body 的高度