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

JQuery指定类后添加行:添加按钮异常添加至每行末尾问题

解决点击添加按钮后新行错误添加到所有行末尾的问题

我太懂这种头疼的情况了——点某一行的Add按钮,本来只想在这行后面插新行,结果所有行末尾都冒出来新内容,完全不是预期的效果!先看看你给出的代码片段:

var i = 2; 
$(document).on("click",".btn_add",function(){ 
  var str1 = '<tr><td>'+i+'</td><td>Row '+i+'</td><td><button class="btn btn-sm btn-success btn_add">Add</button>&nbsp;&nbsp;<button class="btn btn-sm btn-success btn_addsub">Add Sub</button></td></tr>'; 
  // 你这里的插入逻辑应该是用了全局选择器,才导致所有行都被影响
});

问题根源

你大概率是在插入新行时,没有精准定位到当前点击按钮所在的那一行,反而用了类似$('tbody').append(str1)或者$('tr').after(str1)这种全局选择器,导致新行被追加到了所有<tr>元素的后面。

修复方案

核心思路是用$(this)锁定当前被点击的按钮,找到它所属的目标行,再把新行插到这一行的后面。修改后的完整代码如下:

var i = 2; 
$(document).on("click",".btn_add",function(){ 
  var str1 = '<tr><td>'+i+'</td><td>Row '+i+'</td><td><button class="btn btn-sm btn-success btn_add">Add</button>&nbsp;&nbsp;<button class="btn btn-sm btn-success btn_addsub">Add Sub</button></td></tr>'; 
  // 关键:精准定位目标行并插入新内容
  $(this).closest('tr').after(str1);
  i++; // 别忘了递增序号,不然新行的编号会一直重复
});

关键步骤解释

  • $(this):代表当前被点击的那个Add按钮,而不是页面上所有的.btn_add元素,这是精准定位的核心
  • .closest('tr'):从当前按钮向上查找最近的<tr>父元素,也就是你想要在后面插入新行的目标行
  • .after(str1):把新生成的<tr>元素插入到目标行的后面,完美实现“点哪行的Add,就在哪行后面加新行”的需求

这样修改后,再点击Add按钮,新行就只会出现在你点击的那一行后面啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:58:42