Кнопка AJAX запускает все кнопки на странице - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть модал, полный комментариев.Мой код принимает массив JSON и публикует первый индекс в качестве исходного сообщения, затем перебирает остальные в качестве ответов и создает прослушиватели AJAX для каждого сообщения.Когда я нажимаю кнопку AJAX, работают только оригинальные кнопки сообщений, а когда я нажимаю кнопку, как на исходном сообщении, кажется, что она срабатывает 4 раза (количество ответов в моем примере).

enter image description here

Я попытался переместить код для прослушивателей AJAX и удалил прослушиватель AJAX для исходных сообщений, но он все еще работает и отключается несколько раз.

Это моя функция, которая генерирует модель ...

function ShowCommentsModal (res)
        {

$('.modal').modal('show')    
//Set HTML for main comment here
$('.ModalPost').html(
    '<div id="Post"><div id="UserInfoDiv">// HTML CODE FOR ORIGINAL POST
        );
        // REMOVED CODE FOR REPOST AJAX HERE

//Set HTML for comments here
    res.shift();
    $('.CommentArea').html(''); // Clear HTML
    $.each(res, function(index) {    // Start of foreach loop            

$('.CommentArea').html(
     $('.CommentArea').html() +                                              
        // COMMENT HTML HERE
        )
     $('[data-likes]').click(function() {
    var buttonid = $(this).attr('data-likes');
        $.ajax({
        type: "POST",
        url: "api/likes?id=" + $(this).attr('data-likes'),
        processData: false,
        contentType: "application/json",
        data: '',
        success: function(r) {
           var res = JSON.parse(r)
            console.log(r)
            $("[data-likes... //update like button')
          },
        error: function(r) { console.log(r) }
        }); // END OF AJAX
    }); //END OF DATA-LIKES CLICK FUNCTION
        $('[data-comment]').click(function() {
                var buttonid = $(this).attr('data-comment');
              $.ajax({
                      type: "GET",
              url: "api/comments?postid=" + $(this).attr('data-comment'),
              processData: false,
              contentType: "application/json",
              data: '',
              success: function(r) {
                var res = JSON.parse(r)
            console.log(res)
            ShowCommentsModal.call(res);
            },
              error: function(r) { console.log(r) }
        }); //END OF AJAX
    }); //END OF COMMENT CLICK LIKE FUNCTION
}); //End of For Loop
} end of funcrion

Код для создания кнопки

<button class="btn btn-primary" id="InteractButt" data-likes=“'+res[index].post_id+'“

Кнопки генерируются динамически, где я помещаю '// КОММЕНТАРИЙ HTMLЗДЕСЬ '

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...