jQuery clone duplicate IDs

后端 未结 9 1889
醉梦人生
醉梦人生 2020-12-04 19:03

I have an HTML element with a large collection of unordered lists contained within it. I need to clone this element to place elsewhere on the page with different styles adde

9条回答
  •  误落风尘
    2020-12-04 19:50

    Since the OP asked for a way to replace all the duplicate id's before appending them, maybe something like this would work. Assuming you wanted to clone MainConfig_1 in an HTML block such as this:

    • red
    • blue

    The code could be something like the following, to find all child elements (and descendants) of the cloned block, and modify their id's using a counter:

    var cur_num = 1;    // Counter used previously.
    //...
    var cloned = $("#MainConfig_" + cur_num).clone(true, true).get(0);
    ++cur_num;
    cloned.id = "MainConfig_" + cur_num;                  // Change the div itself.
    $(cloned).find("*").each(function(index, element) {   // And all inner elements.
        if(element.id)
        {
            var matches = element.id.match(/(.+)_\d+/);
            if(matches && matches.length >= 2)            // Captures start at [1].
                element.id = matches[1] + "_" + cur_num;
        }
    });
    $(cloned).appendTo($("#smallConfig"));
    

    To create new HTML like this:

    • red
    • blue
    • red
    • blue

提交回复
热议问题