jquery clone div然后找到并替换到处

时间:2011-10-12 02:48:26

标签: jquery clone replace

修改 我尝试了下面的两个建议,但它仍然没有工作......它克隆,但没有增加......

function createNewSection(){

var cloneUp = $('.section-form').length;
var cloneCount = $('.section-form').length - 1;

var newSection = $('#section-0').clone(function() {
        $(this).find('*').each(function() {
            $(this).attr('id', $('#section-0').attr('id').replace(/section-0/,'section-'+cloneUp).replace(/section[_\[]0\]?/,'section_'+cloneUp));
            $(this).attr('name', $('#section-0').attr('replace').replace(/section-0/,'section-'+cloneUp).replace(/section[_\[]0\]?/,'section_'+cloneUp));
        });
});




$('#sections').append(newSection);

}

我正在尝试替换特定字符串的所有实例,并尝试了很多方法来实现它,但更多时候,我得到一个错误,说替换不是函数,$(this)是未定义的或者遗失:争论后......

例如,在以下HTML中:

<div id="section-1-add">
    <div id="section-1">
      <span class="section_1-span">Title</span>

       <input name="section[1][item][62]" id="section-1-item-1" value="Enter Section 1 / Item 1" />

    </div>
</div>

我想替换所有的实例:

section-1 with section-2
section_1 with section_2
section[1] with section_2

我尝试了许多基本相同的变体,但这是最近的尝试:

function createNewSection() {

    var cloneUp = 2;  //this is currently hardcoded, but will be dynamic... just for this example

    var newSection = $('#section-1-add').clone(function() {
            $(this).find('*').each(function() {
                $(this).id=$(this).id.replace(/section-1/,'section-'+cloneUp).replace(/section[_\[]1\]?/,'section_'+cloneUp);
                $(this).name=$(this).name.replace(/section-1/,'section-'+cloneUp).replace(/section[_\[]1\]?/,'section_'+cloneUp);
            });
    });

    $('#sections').append(newSection);
}

在上面的代码中,克隆了该部分,但没有任何ID或名称发生变化......

2 个答案:

答案 0 :(得分:1)

您应该使用.attr()函数来获取和替换id,类值。例如:

$('#section-1').attr('id', $('#section-1').attr('id').replace(/section-1/g, 'section_1'));

答案 1 :(得分:0)

以下代码:

 $(this)

标识一个jQuery对象,但看起来好像要修改实际的DOM对象。要获取该DOM对象,请尝试...

 $(this)[0].id = $(this)[0].id.replace(/*etc*/);