Почему после получения аяксом данных не срабатывает повторно функция
Есть вот такой блок и желтый элемент это элемент с классом .cat_block
http://prntscr.com/h950ne К этому блоку применяется вот такой код $('.cat_block').click(function(){ alert() var id_cat = $(this).parent('a').find('input').val() var cl=$(this).parent('a').parent().attr('class'); cl=cl.split(' ')[1] var simbol=parseInt(cl.slice(10))+1 alert(cl) alert(simbol) new_block_cl=cl.slice(0, 10)+simbol $.ajax({ type: "POST", dataType: 'json', url: '/admin/show_subcat', data: {id_cat: id_cat}, success: function (data) { $('.'+new_block_cl+'').empty(); $.each( data, function( key, value ) { $('.'+new_block_cl+'').append(' <a ><div class="cat_block" >' + '<input type="hidden" value="'+value.id+'">' + value.name+ '<span class="fa arrow" style="float:right"></span>' + '</div></a>') }); } }); }) Но когда код отработал и появились подкатегории в соседнем блоке http://prntscr.com/h951ag Но когда я кликаю по блоку Автозапчасти который тоже имеет класс .cat_block Повторно код не отрабатывает даже не вижу первого алерта |
Потому, что добавленного асинхронно объекта <div class="cat_block" > на момент установки обработчика на странице не было.
Либо делегирование, либо установка ему обработчика после добавления в документ. |
Приведите пожалуйста пример к сожалению не понимаю как это сделать
|
$(селектор ближайшего родителя элементов, который гарантировано есть на странице).on('click', '.cat_block', function() { ... }) - это делегирование обработки события.
$(html).appendTo(получатель).find(есл и надо найти объект).on(...) - это установка обработчика динамически добавляемому элементу. |
Часовой пояс GMT +3, время: 01:39. |