首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何高效地使用JQuery追加内容

如何高效地使用JQuery追加内容
EN

Stack Overflow用户
提问于 2010-01-25 13:51:58
回答 4查看 2.2K关注 0票数 3

我正在使用JQuery在标记中附加大量文本。我发现当前标签中的文本越多,追加的速度就越慢,对于大量的文本来说,追加速度太慢了。

有没有一种更有效的方法来追加文本?例如创建虚拟的子标签并设置它们的内容,而不是附加到父标签?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-01-25 18:20:41

检查这个presentation和这个:jQuery Anti-Patterns

一般情况下:

  • 不要在循环中使用.append()
  • 不要直接附加到DOM
  • 构建字符串然后再附加它或使用DocumentFragment
  • do不要直接附加到DOM

票数 6
EN

Stack Overflow用户

发布于 2010-01-25 17:16:27

使用DOM DocumentFragments添加一堆节点,并查看slideshare中的Nicholas Zakas演示文稿“writing efficient-javascript”

票数 2
EN

Stack Overflow用户

发布于 2010-08-31 22:49:23

当我测试我的站点时,我注意到.innerHTML比jQuery的append方法要快得多。然而,这已经被弃用了,而且在未来的浏览器中,对它的支持可能会缩小并消失。也就是说,bgcolor属性仍然有效,我记得大约十年前有人告诉我它已经被弃用了。也不要在脚本中附加html片段,因为它们需要求值(jQuery似乎会自动执行此操作,这会导致运行速度变慢,而使用innerHTML时,如果需要,您必须手动执行此操作)。Eval非常慢,如果可能的话,不要使用它。同样,如前所述,连接数组比连接字符串更有效。使用变量指向DOM节点(即var this = document.getElementById("YourDomNode")然后在需要的地方使用this,而不是重复document.getElementById语句)。在函数外部声明变量允许从任何函数访问它们。请注意,这是客户端脚本,因此变量值是每个用户的唯一引用。执行高度重复的字符串可以减小文件大小,这取决于您所做的操作。如果您一定要将JavaScript内联加载为html片段的一部分,请尝试执行以下操作:

代码语言:javascript
运行
复制
/* Call this section after appending to the dom with innerHTML */
var f = function() {runScripts(document.getElementById('newDOM_Section'));};
setTimeout(f,1);

/* Stick the following in your main .js file */
var stringScript
var f
function runScripts(element) {
    var scripts = element.getElementsByTagName("script"); 
    var intScriptsCount = scripts.length
        for (var i = 0; i < intScriptsCount; i++) { 
        stringScript = scripts[i].text
            setTimeout(stringScript, 1); 
        }

}

上面的代码将使DOM更改在所有脚本求值之前可见,但这不是多线程,所以使用时要小心。最好使用事件处理程序的属性(onclick、onchange等)

最后,在操作dom中的元素之前,将样式设置为display:none,然后将样式重新设置为display:inline (对于某些常见元素,inline是默认值)或wahtever。

这只是我使用的一些策略的快速心理转储,因此欢迎任何对不良实践的输入/嘲笑。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2130452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档