У меня есть следующий код для отображения ссылок на основе того, что пользователь зарегистрирован или не зарегистрирован:
<?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
Любые идеи почему?
Не уверен, что вы правильно привязываете мероприятие (как говорит @Lorenzo S), но это напоминает мне о проблеме, которая была решена с помощью .live
:
До недавнего времени эта функция была той, которую вы хотели бы, но с jQuery 1.7 она была заменена на .on
:
Не уверен, что это устранит проблему, но вы удалите "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>');
alert()
илиconsole.log()
?