You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

动态构建表格行时jQuery是否多次修改DOM?含代码场景咨询

关于jQuery动态构建表格行的DOM修改次数问题

好问题!咱们来仔细拆解你这段代码的执行逻辑,就能搞清楚DOM修改的次数,以及这种写法的合理性:

1. 你的代码只会修改DOM一次

先看核心逻辑:你先通过$('<tr>')在内存中创建了一个<tr>元素,这个元素此时还没有被插入到页面的DOM树里。接下来所有的.append($('<td>'))操作,都是在这个内存里的<tr>上添加子元素——这一系列操作完全不会触发DOM树的更新,因为元素还没“上树”。

直到最后一步,把整个构建好的<tr>通过.append()添加到$('.widget').find('tbody')中时,才会发生唯一一次DOM修改:把完整的表格行插入到DOM树里,浏览器只需要做一次重排重绘。

2. 你的写法已经是最优实践:先在内存构建元素再追加

你问“是否应当先在内存中构建<tr>元素,再将其追加到tbody中”——其实你的代码已经这么做了!这种写法正是推荐的性能优化方式:

  • 避免了多次DOM操作带来的性能损耗(每次DOM修改都会触发浏览器的重排重绘,频繁操作会拖慢页面)
  • 内存中构建元素的速度远快于直接操作DOM

反过来说,如果是先把空的<tr>插入到tbody,再逐个添加<td>,那才会触发多次DOM修改:

// 不推荐的写法:多次修改DOM
const tbody = $('.widget').find('tbody');
const tr = $('<tr>').appendTo(tbody); // 第一次DOM修改:插入空tr
tr.append($('<td>')); // 第二次:插入第一个td
tr.append($('<td>').text('Median Values')); // 第三次:插入第二个td
// ...后续每个td的添加都会触发一次DOM修改

总结

你的代码写法完全正确,既保证了只修改一次DOM,也遵循了先在内存中构建完整元素再插入DOM的最佳实践,不需要额外调整~

内容的提问来源于stack exchange,提问作者AngryHacker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:37:02