jQuery clone duplicate IDs

后端 未结 9 1852
醉梦人生
醉梦人生 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:51

    This is based on Russell's answer but a bit more aesthetic and functional for forms. jQuery:

    $(document).ready(function(){
       var cur_num = 1;    // Counter
    
        $('#btnClone').click(function(){
    
              var whatToClone = $("#MainConfig"); 
              var whereToPutIt = $("#smallConfig");
    
              var cloned = whatToClone.clone(true, true).get(0);
              ++cur_num;
              cloned.id = whatToClone.attr('id') + "_" + 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;
              }
              if(element.name)
              {
                  var matches = element.name.match(/(.+)_\d+/);
                  if(matches && matches.length >= 2)            // Captures start at [1].
                      element.name = matches[1] + "_" + cur_num;
              }
    
             });
    
           $(cloned).appendTo( whereToPutIt );
    
        });
    });
    

    The Markup:

    • red
    • blue

提交回复
热议问题