Заменить атрибуты клонирования в jQuery Clone?

0

Поэтому у меня есть список, который я клонирую, чтобы клонировать и добавлять новые записи для:

<li class="splashEntry" data-counter="0">
    <select name="options[0][type]" class="textCtrl">...</select>
    <select name="options[0][sort]" class="textCtrl">...</select>
</li>

Я закрываю поле, используя $('li.splashEntry').last().clone() и получая значение счетчика с использованием .data('counter').

Теперь мой вопрос будет о том, что будет лучшим способом обновить поле счетчика данных и именами выбора в последующем создаваемом клоне? В идеале, клонированный элемент списка должен иметь увеличенный счетчик данных и выбирать имена. Таким образом, клонированное поле, которое будет добавлено к концу, должно быть:

<li class="splashEntry" data-counter="1">
    <select name="options[1][type]" class="textCtrl">...</select>
    <select name="options[1][sort]" class="textCtrl">...</select>
</li>

Затем, поскольку эта новая запись добавляется до конца; если я нажму кнопку, чтобы создать другой клон, он должен прочитать новый счетчик данных как 1 (вместо 0 в первой строке), а затем создать новый элемент списка, где все записи говорят 2.

Какой был бы лучший способ достичь этого?

Теги:
clone

1 ответ

1
Лучший ответ

Попробуйте что-нибудь вроде

//cloned element
var $clone = $('li.splashEntry').last().clone(),
    //find the new counter value using old one
    counter = $clone.data('counter') + 1;
//update the data-counter attibute - used attribute instead of data because it gives a visual update on the dom
$clone.attr('data-counter', counter);
//update the name values
$clone.find('[name]').attr('name', function (_, name) {
    return name.replace(/\[\d+\]/, '[' + counter + ']')

Демо: скрипка

  • 0
    Это сработало ... спасибо.
  • 0
    Новый вопрос ... знаете ли вы, как я бы отменил выбранный вариант из клона?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню