0

在我的网络应用程序中,我需要创建许多具有不同内容的相同块。我不想在服务器上完全形成元素,考虑到其中一些元素需要从用户的输入中创建。因此,我看到了两种在客户端创建此类块的方法:

  1. 使用 jQuery(或只是 javascript)逐个元素创建块元素。缺点是创建这些块的那段代码不是可识别的 HTML,我认为这很糟糕,而且也很难修改。
  2. 创建一个 HTML 元素(例如,一个 div),使其不可见,然后克隆它并使用它来创建必要的新元素。

不过,我不确定哪种方式更好,并且可能会有更好的变体。我试图用谷歌搜索这个问题,但找不到任何东西。

你会推荐什么?

4

5 回答 5

3

jQuery

var elementClone  = $(element).clone();

或(不是更好):

var elementClone = $(element).html();

javascript

var elementClone = document.getElementById('elementID').cloneNode(true);

希望这对你有帮助

于 2012-12-29T15:28:12.730 回答
1

你总是可以使用基本的 DOM

var clone = document.getElementById('elementID').cloneNode(true);
document.body.appendChild(clone); //wherever you want to place the cloned element
于 2012-12-29T15:28:00.937 回答
1

另一种方法是使用模板引擎,例如mustacheunderscoreHandlebars

于 2012-12-29T15:33:15.627 回答
1

如果没有关于“相同块”和“不同内容”结构的更多详细信息,很难对您的问题给出很好的答案。

前段时间我正在解决类似(或者说听起来很相似)的问题,而纯模板引擎重复一个节点示例)非常好地解决了我的问题。

于 2012-12-29T15:34:42.423 回答
0

正如您所指出的,有几种方法可以做到这一点。最常见的是使用模板引擎。模板引擎允许您专注于标记内容(在块之间有所不同),并自动执行输出周围标记的任务。

这种方法的一个非常简单的示例(尽管可能是最不方便的方法之一)是将您的内容标记为精简的 XML,并使用 XSLT 将其转换为所需的 HTML。可以在此处找到有关此方法的教程:https ://developer.mozilla.org/en-US/docs/Transforming_XML_with_XSLT

在不推荐单个模板引擎的情况下,这里有一篇比较各种浏览器端替代方案的文章:浏览器端模板引擎综述:Google Closure Templates、jTemplates 和 PURE

于 2012-12-29T15:31:27.563 回答