Почему после получения аяксом данных не срабатывает повторно функция
Есть вот такой блок и желтый элемент это элемент с классом .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, время: 09:13. |