克隆上一个 tr 行并将其追加到当前表
Clone and append previous tr row to current table
我有一个包含 3 行的表格,其中包含可以填充值的输入。
现在我在最后一个tr中有一个链接,上面写着" + More"。
"+ 更多"链接,如果按预期工作,应克隆上述 tr 并将其附加到链接上方。
这就是我有多远:
http://jsfiddle.net/9s8LH/2/
$(document).ready(function(){
$('.appendRow').bind('click', function(){
var $table = $(this).closest('table');
var $tr = $(this).closest('tr');
var $trAbove = $(this).prev('tr');
$table.append($tr.clone());
});
});
我试图在我里面的那个之前使用prev('tr')
来抓取 TR 元素,但它并没有真正起作用。
第二个问题是它附加到 +More TR 下,而不是在其上方。
如何做到这一点?
$(this).prev('tr')
不起作用的原因是您的appendRow
类位于链接上,而不是行上。链接之前没有tr
,prev
查看前一个同级元素(同级元素 = 在同一父级中),以查看它是否与选择器匹配。它不会扫描,也不会向上移动层次结构。
不过你已经很接近了,见评论:更新的小提琴
$(document).ready(function(){
$('.appendRow').bind('click', function(){
// First get the current row
var $tr = $(this).closest('tr');
// Now the one above it
var $trAbove = $tr.prev('tr');
// Now insert the clone
$trAbove.clone().insertBefore($tr);
});
});
请注意使用 insertBefore
,这会在当前行之前插入克隆。
尝试使用 on() 来动态添加元素,你的 HTML 应该是这样的,
.HTML
<table class="extraBookingBox">
<tr><td>Fees</td><td>Amount</td></tr>
<tr>
<td><input type="text" style="width: 40px;" name="cancelfee_price[]" />€</td>
<td><input type="text" style="width: 40px;" name="cancelfee_price[]" />€</td>
</tr>
<tr>
<td colspan="2"><a href="#" class="appendRow">+ More</a></td>
</tr>
</table>
脚本
$(document).ready(function(){
$(document).on('click','.appendRow', function(){
var $tr = $('table tr:nth-child(2)').clone();
console.log($tr);
$tr.insertBefore($('.appendRow').closest('tr'));
});
});
演示
相关文章:
- 单击按钮后如何逐个调用分区,上一个分区将隐藏
- 如何将值传递到上一个html页面
- Javascript获取上一个元素的内容
- 禁用旋转木马中的下一个按钮和上一个按钮
- 引用vue.js中v-for中的上一个值
- DOM导航-上一个同级未定义
- 构建JS测试,警报窗口重复上一个Q,而不是问下一个Q
- 如何在用户返回和上一个按钮时刷新下拉列表
- 删除“;上一个“;以及“;下一个“;基于当前幻灯片
- 简单的垂直上一个和下一个按钮代码点击上下移动jQuery
- HTML5历史记录-返回上一个完整页面按钮
- 算法:从数组(javascript/angular)中按当前日期获取上一个和下一个事件
- 如何选择给定类的上一个元素
- 用键盘分页jQuery下一个和上一个控件.触发器('点击')不'不起作用
- 如何使请求等待上一个请求完成
- 当我单击下一个或上一个按钮时,datatable显示旧值
- 使用reactjs setState回调获取上一个输入值的计算值
- JQuery关注上一个点击的输入错误
- 克隆上一个 tr 行并将其追加到当前表
- 动态地在Div标签上追加另一个Div数据