jQuery. Дубликаты значений

90
30 сентября 2019, 00:10

Трудность в следующем: берется шаблон (тег template) из html файла. При нажатии по кнопке создается разметка из шаблона в html файле, на котором навешивается событие в input. Если добавить к примеру три карточки и в самой верхней карточке в поле вести любое значение, то это значение будет добавлено в три карточки, а у меня трудность в том, что надо сделать, чтобы в каждой карточки было индивидуальное значение и не дублировалось в другие карточки.

Спасибо.

шаблон

<template id="templateCard">
  <div class='wrapper'>
    <div class="card">
      <div class='title'><h1></h1></div>
      <div class='inp'><input id="target" type="text"></div>
      <div class='listItems'>
        <ul></ul>
      </div>
    </div>
  </div>
</template>

JS код

$('body').on('click', '#newCard', function(e) {
    console.log('check')
    let copyTemp = $($('#templateCard').prop("content")).clone();
    copyTemp.find('h1').text('New Card').append('<span class="removeCard"> X</span>');
    copyTemp.find('ul').append('<li>One task</li><li>Two task</li><li>Three task</li>')
    $('#container').append(copyTemp.find('.wrapper').html());
    // closeCard(); // события закрытия карточки
    addTask(); // добавить задачу
});
// события добавления задач
function addTask() {
    $('.card').on('keypress', '#target', function (e){
        if (e.which === 13) {
            let task = $(this).val();
            $(this).val('');
            $('ul').append('<li>' + task + '</li>');
            console.log($(this));
        }
    })
}
Answer 1

$('body').on('click', '#newCard', function(e) { 
  let copyTemp = $($('#templateCard').prop("content")).clone(); 
  copyTemp.find('h1').text('New Card').append('<span class="removeCard"> X</span>'); 
  copyTemp.find('ul').append('<li>One task</li><li>Two task</li><li>Three task</li>') 
  $('#container').append(copyTemp.find('.wrapper').html()); 
}); 
 
$('#container').on('keypress', '.card .target', function(e) { 
  if (e.which === 13) { 
    let task = $(this).val(); 
    $(this).val(''); 
    $(this).closest('.card').find('ul').append('<li>' + task + '</li>'); 
  } 
}); 
 
$('#container').on('click', '.card .removeCard', function(e) { 
  $(this).closest('.card').remove(); 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
<button id="newCard">New Card</button> 
<div id="container"></div> 
<template id="templateCard"> 
  <div class='wrapper'> 
    <div class="card"> 
      <div class='title'><h1></h1></div> 
      <div class='inp'><input class="target" type="text"></div> 
      <div class='listItems'> 
        <ul></ul> 
      </div> 
    </div> 
  </div> 
</template>

READ ALSO
Клик в любом месте страницы для удаления класса элемента

Клик в любом месте страницы для удаления класса элемента

Есть на странице видеоролик с ютюба с маской на немПо клику - я эту маску убираю, добавлением класса без маски

123
Как сохранить изменения DataGridView1 через OdbcDataAdapter в БД

Как сохранить изменения DataGridView1 через OdbcDataAdapter в БД

Не могу сохранить изменения DataGridView1 в БД

124
Как именно ВЫ поступайте с input[type=&#39;tel]?

Как именно ВЫ поступайте с input[type='tel]?

у меня вопрос по поводу формы и тега input[type='tel']Как вы делайте его что бы при заполнение был правильный формат

128