Jquery clone,替换id和name属性中的number

前端之家收集整理的这篇文章主要介绍了Jquery clone,替换id和name属性中的number前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我意识到这个问题类似于之前被问过的一些问题而且我可能没有得到它,因为它是晚上9点,但是我想知道如何解决这个问题.我知道我哪里出错我只是不知道如何解决它:

我正在克隆一个包含4个选择框的表行,我想克隆id和名称,但是将id增加1.这就是我现在所拥有的.

$(document).on("click","#new_item",function() {
    var rowCount = $("#widget_location_options tbody>tr:last select").attr("id").match(/\d+/);
    var rowCount1 = rowCount*1 + 1;
    var row = $("#widget_location_options tbody>tr:last").clone(true);
    $("select option:selected",row).attr("selected",false);
    $("select",row).attr("name",$("select",row).attr("name").replace(/\d+/,rowCount1) );
    $("select",row).attr("id",row).attr("id").replace(/\d+/,rowCount1) );
    row.insertAfter("#widget_location_options tbody>tr:last");
});

问题在于它正在使用id&第一个选择的名称并正确递增id,但将其应用于所有选择不是我想要的.

为清楚起见,我正在克隆的行的HTML如下所示:

希望有人可以指出我在哪里可怕的错!

非常感谢

最佳答案
@Mark F,你给了我一个正确方向的暗示 – 谢谢.实际解决方案如下所示:

$(document).on("click",function() {
    ...

    $(row).find("select").each(function(){
        $(this).attr("name",$(this).attr("name").replace(/\d+/,rowCount1) );
    });
    $(row).find("select").each(function(){
        $(this).attr("id",$(this).attr("id").replace(/\d+/,rowCount1) );
    });


    ...
});

令人惊讶的是,一个美好的夜晚睡觉,并在正确的方向轻推可以实现.

再次感谢.

猜你在找的jQuery相关文章