Действие JQuery работает только после перезагрузки страницы

0

У меня есть следующий код для отображения ссылок на основе того, что пользователь зарегистрирован или не зарегистрирован:

<?php if(NOT LOGGED){ ?>
   <div id="menu"><ul><li><a class="login-button" href="login">LOGIN</a></li></ul></div>
<?php }else{ ?>
   <div id="menu"><ul><li><a class="logout-button" href="logout">EXIT</a></li></ul></div>
<?php } ?>

При нажатии кнопки "login-button" я вызываю функцию JQuery, которая при успешном выполнении заменит ее следующим

<div id="menu"><ul><li><a class="logout-button" href="logout">EXIT</a></li></ul></div>

Здесь js

$.ajax({
url: 'login.php',
type: 'POST',
dataType: "json",
success: function (data) {
    $('#menu').html('<ul><li><a class="logout-button" href="logout">EXIT</a></li></ul>');
},
error: function (data) {
    alert('An Error occurred');
}
});

Проблема в том, что когда я нажимаю ссылку на выход, когда она создается JQuery, она не работает.

Он работает только тогда, когда страница обновляется и фактически заменяется на php

Любые идеи почему?

  • 0
    Можете ли вы подтвердить, что ваша функция успеха jQuery вызывается с помощью вызовов alert() или console.log() ?
  • 0
    Что происходит, когда вы нажимаете кнопку «Выйти»? Он запускает какую-то функцию JS или просто переходит на HREF url?
Показать ещё 4 комментария
Теги:
reload
refresh

2 ответа

0

Не уверен, что вы правильно привязываете мероприятие (как говорит @Lorenzo S), но это напоминает мне о проблеме, которая была решена с помощью .live:

http://api.jquery.com/live/

До недавнего времени эта функция была той, которую вы хотели бы, но с jQuery 1.7 она была заменена на .on:

http://api.jquery.com/on/

0

Не уверен, что это устранит проблему, но вы удалите "ul" в своей успешной функции

$('#menu').html('<li><a class="logout-button" href="logout">EXIT</a></li>');

Должно быть

$('#menu').html('<ul><li><a class="logout-button" href="logout">EXIT</a></li></ul>');
  • 0
    На самом деле, нет. Это была только моя ошибка, не помещая это там, но это фактически там

Ещё вопросы

Сообщество Overcoder
Наверх
Меню