javascript - 克隆上一个 tr 行并将其附加到当前表

标签 javascript jquery

我有一个包含 3 行的表格,其中包含可以填写值的输入。

现在我在最后一个 tr 中有一个链接,上面写着“+ 更多”。

如果按预期工作,“+ 更多”链接应该克隆上面的 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 元素之前的 TR 元素,但它实际上不起作用。

第二个问题是它附加在 +More TR 下方,而不是其上方。

如何做到这一点?

最佳答案

$(this).prev('tr') 不起作用的原因是您的 appendRow 类位于链接,而不是行。 link 之前没有 trprev 查看前一个同级元素(sibling = 在同一父元素内)以查看是否存在匹配选择器。它不会扫描,也不会向上提升层次结构。

不过你已经很接近了,请参阅评论:Updated Fiddle

$(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 的使用,这会将克隆插入到当前行之前。

关于javascript - 克隆上一个 tr 行并将其附加到当前表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19830734/

相关文章:

Javascript - console.log 方法问题中的括号

javascript - 如何设置 jQuery UI slider 的最小/最大间隔和值?

javascript - 了解对象字面量中的 JavaScript 匿名函数与命名函数

javascript - 无法在 chrome 本地存储中使用 jquery,如何对 css :has pseudoselector using only javascript? 使用 .remove() jquery 方法

javascript - 使用 Express Handlebars 模板引擎复制到 NodeJs 中的剪贴板

javascript - ASP.NET MVC5 从部分 View 调用 JavaScript 函数

javascript - 我的案例的函数声明和函数表达式之间的区别

jquery - 该页面的状态信息无效并且可能已损坏。 (仅在 IE 中)

javascript - 如何用JS设置延迟显示和隐藏

javascript - jQuery 根据其他下拉列表的选定值禁用其他下拉列表值