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

jQuery动态追加行div时切换目标容器的实现问题求助

问题核心原因

你对after()方法的理解有误:Element.after()的作用是在当前元素的外侧后方插入同级节点,并不是在当前元素内部添加子元素。另外循环中反复修改innerHTML会频繁触发DOM重绘,也会导致你维护的DOM引用容易失效。

修正后代码

$("#search").click(function(event){
    var e = document.getElementById("lineDesc");
    var line = e.options[e.selectedIndex].text;
    var month = document.getElementById("descMonth").value;
    var desc = $("#lineDescAr").val();
    // 提前获取表格容器,后续不用修改这个引用
    var searchTab = document.getElementById("searchtab");
    let fd = new FormData();
    fd.set('line', line);
    fd.set('month', month);
    fd.set('desc', desc);

    fetch('search.php',{method:'POST',body: fd})
        .then( r=> r.json())
        .then( json=>{
            // 先清空容器原有内容
            searchTab.innerHTML="";
            Object.keys( json ).forEach( key=>{
                let obj=json[ key ];
                var description = obj.description;
                // 新建行节点
                let newRow = document.createElement('div');
                newRow.className = 'row';
                // 拼接当前行所有单元格
                let cellHtml = `
                <div class="cell" onclick='showDesc("${description}")'>${obj.line}</div>
                <div class="cell" onclick='showDesc("${description}")'>${obj.scanner}</div>
                <div class="cell" onclick='showDesc("${description}")'>${obj.fault}</div>
                <div class="cell" onclick='showDesc("${description}")'>${obj.duration}</div>
                <div class="cell" onclick='showDesc("${description}")'>${obj.date}</div>
                `;
                newRow.innerHTML = cellHtml;
                // 把整行追加到表格容器末尾
                searchTab.appendChild(newRow);
            })
        })
    event.preventDefault();
});

主要修改点

  • 固定了表格容器#searchtab的引用,不需要在循环中动态切换DOM指针,避免引用混乱
  • 每次循环先创建独立的.row行节点,所有单元格内容拼接完成后再一次性插入DOM,大幅减少重绘次数
  • 移除了冗余的计数器和动态id逻辑,代码更简洁,也避免了动态id拼接可能出现的语法错误
  • 改用模板字符串拼接HTML,代码可读性更高,也不用手动处理引号转义问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:42:02