将.closest()中的变量用于选择器

时间:2013-06-27 19:16:45

标签: javascript jquery

我确信这很容易做到,但我被卡住了。

我在页面中有多个表单,每个表单都有一个“重复”按钮。

该按钮复制一行并将其放在每个表单内部的表的末尾。表的类是'.table-add'。所以我试图告诉按钮找到最接近的表单元素并将其添加到我的选择器上的路径,但它不起作用。我知道如果我在每个表单中放入一个ID并且要求它们,它可以工作,但这不是我想要的。谢谢你的帮助。

这是我的代码:

i=0;
$(".duplicate").on("click", function(e) {
    i++;
    $newID = 'clon'+i;
    selectedObj = $($( e.target ).closest("form"));
    alert(selectedObj.html()); //**THIS WORKS**
    $cloned = '<tr class="'+$newID+'">'+$(selectedObj+' .table-add tr:first').next().html()+'</tr>';
    $(selectedObj+' .table-add > tbody:last').append($cloned);
});

1 个答案:

答案 0 :(得分:3)

请使用:

var i=0;
$(".duplicate").on("click", function(e) {
    i++;
    var $newID = 'clon'+i;
    var selectedObj = $(e.target).closest("form");
    alert(selectedObj.html()); //**THIS WORKS**
    var $cloned = '<tr class="'+$newID+'">'+selectedObj.find('.table-add tr:first').next().html()+'</tr>';
    selectedObj.find('.table-add > tbody:last').append($cloned);
});

selectedObj是一个jQuery对象,因此您可以使用.find()函数选择.table-add tr:first'.table-add > tbody:last'