javascript - 动态 (AJAX) HTML 创建

标签 javascript html ajax dynamic

我正在寻求有关此主题的意见,如下所述。特别是,我正在寻找关于如何动态构建 HTML 的“最知名方法”或设计模式。

这对我来说是一项非常常见的任务: 通过 POST 向服务器提交内容 --> 以 JSON 格式返回结果列表 --> 获取这个 0 到 n 个结果的列表并显示它们,通常作为列表。这通常意味着使用 Javascript (jQuery) 构建实际的 HTML,例如:

HTMLResult = "<div id=....     "
HTMLResult = HTMLResult + JSONDataElement
HTMLResult = "</div>"
...

然后我使用 jQuery 添加每个元素或将它们捆绑起来并替换某些容器 div 的 HTML。

我厌倦了这样做。它容易出错、丑陋、低效等......

我宁愿做一些面向对象的东西。 或许 Element 会以某种方式定义 - 它是否在 div 中,span,它包含什么......这样我就可以做这样的事情:

tempElement = new Element
tempElement.text = JSONData.text
ResultsList.addElement(tempElement)

我正在寻求任何关于更好的方法来完成我所描述的内容的意见。我更喜欢最小的工具集:HTML、CSS、jQuery。

(还有如何在后端构建 HTML,在本例中为 Django)?

最佳答案

克隆元素应该是相当快的,所以我有时会在初始页面中包含要生成的元素模板,使用 display: none。然后,当我从服务器接收到数据时,我可以

var newElement = $('#some-template').clone().removeAttr('id');

然后,这取决于必须更换多少。有时我只是设置所需的属性并设置文本等,有时我在模板中有占位符并进行类似

newElement.html(newElement.html().supplant(paramObj));

其中 paramObj 包含替换占位符的值,supplant 取自 Crockford .当然,修改 String 原型(prototype)并非没有问题,但在这种情况下,可以通过使用函数轻松避免。

关于javascript - 动态 (AJAX) HTML 创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2309331/

相关文章:

javascript - 组中的 D3 路径不显示在 Firefox 中,仅显示在 Chrome 中

javascript - $watch 没有以相同的值触发

javascript - 如何创建一个包含另一个 Angular Cli 的 Angular Cli 应用程序?

javascript - 如何 .append 带有值的复选框?

JavaScript:使用按钮更改文本颜色,每次单击按钮时都会显示不同的样式。不工作

html - 在 <div> 和 <panel-groups> 之间出现异常空间的情况下使用 Bootstrap 3.0

html - 即使在使用 z-index : 2 之后,我的文本也没有以模糊效果显示在我的容器上

javascript - 如何从 Rails Controller 中的 XMLHttpRequest 中提取数据

javascript - 对 JavaScript 创建的 div 进行排序

html - 用户如何<h :messages> only if not null messages?