Не срабатывают скрипты для блоков, которые были сгенерированы посредством .html()

169
01 ноября 2021, 12:30

function generateNew() { 
  var data = `<div class="step">  
     <input id="opt21" type="checkbox"/> 
      <label for="opt21">red</label> 
      <input id="opt22" type="checkbox"/> 
      <label for="opt22">green</label> 
    </div>`; 
  $('.new').html(data); 
} 
 
$('button').on('click', generateNew) 
 
$('.step :checkbox').on('click', function() { 
  alert('Чекбокс нажат') 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
<div class="step"> 
  <input id="opt21" type="checkbox" /> 
  <label for="opt21">red</label> 
  <input id="opt22" type="checkbox" /> 
  <label for="opt22">green</label> 
</div> 
<button>Новые чекбоксы</button> 
<div class="new"></div>

  • Вот этот скрипт срабатывает на чекбоксы, которые были как html, но не срабатывает на сгенерированные вследствие нажатия button. Есть ли способ это обойти?

jsFiddle

Answer 1

Ответ @teran рабочий, так что дубликат.

Из ответа по ссылке выше:

function generateNew() { 
  var data = `<div class="step">  
     <input id="opt21" type="checkbox"/> 
      <label for="opt21">red</label> 
      <input id="opt22" type="checkbox"/> 
      <label for="opt22">green</label> 
    </div>`; 
  $('.new').html(data); 
} 
 
$('button').on('click', generateNew) 
 
$(document).on('click', '.step :checkbox', function() { 
  alert('Чекбокс нажат') 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
<div class="step"> 
  <input id="opt21" type="checkbox" /> 
  <label for="opt21">red</label> 
  <input id="opt22" type="checkbox" /> 
  <label for="opt22">green</label> 
</div> 
<button>Новые чекбоксы</button> 
<div class="new"></div>

READ ALSO
Каракули вместо кириллицы

Каракули вместо кириллицы

При отправке get или post запроса и чтение его с помощью requestquery и request

139
После Transform scale высота родителя остаётся

После Transform scale высота родителя остаётся

Есть ребёнок и родитель, у ребёнка размеры 1610x900, у родителя высота примерно 300pxДобавил ребёнка в родителя, transform:scale(0

126
Как в шаблон вставить php-файл?

Как в шаблон вставить php-файл?

Используется простой шаблонизатор по типу:

143
Вирутальные функции

Вирутальные функции

Есть std::vector aТам содержатся как объекты типа A так и C

91