Задать вопрос
@MaoCzedun

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

Делаю дерево комментариев , есть класс magnific-pop-up (класс jQuery-плагинa magnific-popup), на него навешан слушатель на событие onclick. Так как я делаю дерево комментариев, то добавляю дочерний элемент с таким же классом. Вот тут выходит незадача, на дочернем элементе слушатель срабатывает только при перезагрузке страницы, что мне не надо, нужно, чтобы при добавлении на нем также был слушатель. Как это сделать?
Код слушателя:
$('.popup-with-form').click(function(){
             $('#toForm form').trigger('reset');
            var  dataParentId = $(this).attr('data-parent-id');
            if(typeof dataParentId == 'undefined')
            {
                dataParentId = 0;
            }
            $('#parentId').attr('value',dataParentId); 
            $('.popup-with-form').magnificPopup({
        		type: 'inline',
        		preloader: false,
            });
        });

Код вставки элемента:
function(data,textStatus,jQhr){
                    var  parseData = $.parseJSON(data);
                    var htmlToAppend = '<div class="reviews_row"><div class="reviews_name">'+parseData.record.surname+' '+parseData.record.username+'<span class="reviews_time">';
                    htmlToAppend +=parseData.record.date;
                    htmlToAppend +='</span></div>';
                    htmlToAppend +='<div class="reviews_text">';
                    htmlToAppend +=parseData.record.text;
                    htmlToAppend +='</div>';
                    htmlToAppend +='<a href="#toForm" data-parent-id="'+parseData.record.comments_id+'" class="popup-with-form"> <span class="respond">Ответить</span></a>'; 
                    htmlToAppend +='</div>';
                    $('#toForm .messageText').text('Ваш отзыв  добавлен');
                    var parentId = parseData.record.parentID;
                    if(parentId!=='0')
                    {
                        //  не соблюдается иерархия, перестроить селектор 
                        var $updateTree  = $('#forAddedComments a[data-parent-id="'+parentId+'"]');
                        var $subitemToUpdate =    $($updateTree).parents('.reviews_row').next('.subitem');
                        if(typeof  subitemToUpdate!=='undefined')
                        {
                            console.log('vetka 1');
                            $subitemToUpdate.append(htmlToAppend);
                        }
                        else
                        {
                            console.log('vetka 2');
                            $('<div class="subitem">'+htmlToAppend+'</div>').insertAfter($($updateTree).parents('.reviews_row'));
                        }
                        
                                                    
                    }
                    else
                    {
                        
                        $('#forAddedComments').append(htmlToAppend);
                        var addedSpan = $('#wrapMoreReviews').detach();
                        $('#forAddedComments').append(addedSpan);
                    }
                    window.setTimeout(
                    function(){
                        $.magnificPopup.close();
                       
                    },
                    4000);
                }
  • Вопрос задан
  • 212 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
$(document).on('click', '.popup-with-form', function(){

});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@MaoCzedun Автор вопроса
А почему тогда мой вариант с
$('.popup-with-form').click(function(){
}

Работает неккоректно ?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 17:50
7000 руб./за проект
18 дек. 2024, в 17:26
5000 руб./за проект
18 дек. 2024, в 17:23
1500 руб./за проект