Не срабатывает событие click [дубликат]

202
01 июля 2017, 12:57

На данный вопрос уже ответили:

  • Как заставить метод on() вести себя как метод live()? 1 ответ

Есть код:

HTML

<input type="button" id="add" value="Add">
<ul class="list">
  <li id="0">54546</li>
 </ul>
<div class="result"></div>

и jQuery

$(document).ready(function(){
  $('#add').click(function(){
    var i;
    for(i = 1; i < 5; i++){
       $('.list').append('<li id="'+i+'">Test</li>'); 
    }
  });
  $('li').click(function(event){
    $('.result').text($(event.target).text());
  });
});

На данный момент клик по li срабатывает только по элементу с id=0. Если добавить дополнительные элементы li, с помощью кнопки Add, то они работать не будут. Скажите пожалуйста, как сделать чтобы клик по другим элементам li срабатывал?

Answer 1

В тот момент, когда загружается страница на элементы li ставится обработчик клика, но на новые элементы, которые создаются по клику на кнопку обработчик не ставится. Чтобы обработчик срабатывал нужно его поставить.

function liclick(event) {
  $('.result').text($(event.target).text());
}
$(document).ready(function(){ 
  $('#add').click(function(){ 
    var i;
    for(i = 1; i < 5; i++){ 
      var el=$('<li id="'+i+'">Test</li>');
      $('.list').append(el);
      el.click(liclick);
    }
  }); 
  $('li').click(liclick);
});
READ ALSO
Как изменить стиль элементу на javascript?

Как изменить стиль элементу на javascript?

Хочу поменять стиль элементу на странице, который соответствует выбранному (у них одинаковый параметр idEv)Пробую так:

249
Цикл внутри jsx

Цикл внутри jsx

Не могу понять как вывести в цикле те компоненты у которых одноименное состояние trueДопустим у меня есть компонент SettingMain и SettingPassword, у первого...

262
Uncaught TypeError: Object prototype may only be an Object or null

Uncaught TypeError: Object prototype may only be an Object or null

Помогите пожалуйста разобраться с ошибкойУже второй день с ней мучаюсь, но не могу понять как её исправить

781