JQuery操作仅在重新加载页面后才起作用

时间:2014-02-23 21:47:15

标签: php jquery refresh reload

我有以下代码根据用户是否被记录的事实显示链接:

<?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 } ?>

单击“登录按钮”时,我调用一个成功的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

替换时才有效

任何想法为什么?

2 个答案:

答案 0 :(得分: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>');

答案 1 :(得分:0)

不确定你是否正确绑定了事件(正如@Lorenzo S所说)但这确实让我想起了.live解决的问题:

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

直到最近,该功能才是您想要的功能,但是自从jQuery 1.7以来它已被.on取代:

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