Не работает событие click() - jQuery

268
15 августа 2017, 12:43

Здравствуйте. Написал скрипт с использованием AJAX. Суть скрипта заключается в том, чтобы выводить входящие сообщения из БД. Скрипт выполняется каждую секунду дабы не пропустить сообщение.

$('.accept-btn').click(function() { 
    var id_session = $(this).closest('div p.msg-t').prev().text();
    acceptMessage(id_session);
    generateChat(id_session);
    e.preventDefault();         
})
function generateChat(id_session) {
    $.ajax({
    url: 'generatechat.php',
    type: 'POST',
    data: {'id_session': id_session},
    success: function(data) {
    },
    error: function () {
        $('.all-chats').html("Не удалось создать чат.");
    }
    });
}
function acceptMessage(id_session) {
    $.ajax({
    url: 'accept.php',
    type: 'POST',
    data: {'id_session': id_session},
    success: function(data) {
    },
    error: function () {
    }
  });
}

Скрипт который выполняется каждую секунду, запускающий обращение к БД и вытаскивающий оттуда сообщения.

var interval = 1000;
show();
setInterval('show()', interval);
function show() {
    $.ajax({
    url: 'show.php',
    timeout: 10000, 
    success: function(data) {;
      $('.msg-to-all').html(data);
    },
    error: function() {
      $('.msg-to-all').html("Не удалось загрузить сообщения");
    }
  });
}

Вопрос: Почему не удается нажимать на кнопку? Из за обновления блока с новыми сообщениями событие click() становится недоступным. Как это исправить? Заранее спасибо..)

Answer 1

Используйте метод jQuey on(). Таки образом:

$('.accept-btn').on('click', function() { 
    var id_session = $(this).closest('div p.msg-t').prev().text();
    acceptMessage(id_session);
    generateChat(id_session);
    e.preventDefault();         
});
Answer 2

Можно попробовать так

$('body').on('click','.accept-btn', function() {
    var id_session = $(this).closest('div p.msg-t').prev().text();
    acceptMessage(id_session);
    generateChat(id_session);
    e.preventDefault();
});

UPD: А на чем стоит preventDefault? В Вашем коде обработчику клика не передается переменная e.

READ ALSO
Отправка таблицы в письме

Отправка таблицы в письме

Здравствуйте! Есть текст сообщения $message и таблица $table

193
данные из $_SESSION в select после валидации form

данные из $_SESSION в select после валидации form

Есть два связанных select(main) и select(child) в form: Первый:

275
Как отправить значения формы и получить ответ на этой же странице, или в popup окне

Как отправить значения формы и получить ответ на этой же странице, или в popup окне

У меня есть формаПосле нажатия кнопки Submit я хочу что бы под формой появилась надпись что данные отправлены

307