JQuery клон Div затем найти и заменить везде - PullRequest
0 голосов
/ 12 октября 2011

РЕДАКТИРОВАТЬ Я попробовал оба приведенных ниже предложения, но он все еще не работает ... Он клонирует, но не увеличивает ...

функция 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);

}

Я пытаюсь заменить все экземпляры определенной строки и пробовал несколько способов сделать это, но чаще всего я получаю сообщение об ошибке, заменяющее isn'функция, $ (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);
}

В приведенном выше коде раздел клонирован, нони один из идентификаторов или имен не меняется ...

Ответы [ 2 ]

1 голос
/ 12 октября 2011

Вы должны использовать функцию .attr (), чтобы получить и заменить id, значение класса.Например:

$('#section-1').attr('id', $('#section-1').attr('id').replace(/section-1/g, 'section_1'));
0 голосов
/ 12 октября 2011

Следующий код:

 $(this)

идентифицирует объект jQuery, но выглядит так, как будто вы хотите изменить реальный объект DOM.Чтобы получить этот объект DOM, попробуйте ...

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