我正在创建一个论坛,我希望用户登录时更改用户面板。所以默认情况下会显示“登录或注册”。但是当用户登录时,它会显示其名称和注销选项。
这个想法是,当他们点击退出时,jQuery会要求确认,如果是真的,他们将被重定向到?logout = true,其中php处理剩下的。
问题是jQuery不会对php回应的元素起作用。
这是PHP:
<div id="userbar">
<span id="userPanel">User Panel</span>
<?php
if (isset($_SESSION['signedIn'])) {
echo '
<a href="#" class="logout">Sign Out</a>
<span id="welcome">
Hello, <b><a href="#" class="sessName">' . $_SESSION["username"] . '
</b></a></span>
';
} else {
echo '
<a href="signin.php" class="signIn">Sign In</a>
<a href="signup.php" class="register">Register</a>
';
}
?>
</div>
这是jQuery:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
<script type="text/javascript">
$(".logout").click(function(){
var exit = confirm("Are you sure you would like to sing out?");
if (exit == true) {
window.location("header.php?logout=true");
}
return false;
});
</script>
答案 0 :(得分:1)
首先,你需要更新你的jquery太旧了。
这是我创建的最终功能,你可以尝试一下。
function alertLogOut(){
var exit = confirm("Are you sure you would like to sing out?");
if (exit == true) {
window.location.href="header.php?logout=true";
}
return false;
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<a href="#" class="logout" onclick="alertLogOut();">Sign Out</a>
答案 1 :(得分:0)
您可以在html的顶部添加您的监听器。试着这样做:
$(document).ready(function() {
$(".logout").click(function(){
var exit = confirm("Are you sure you would like to sing out?");
if (exit == true) {
window.location("header.php?logout=true");
}
return false;
});
});
这样,jQuery会一直等到你的DOM被完全加载。
答案 2 :(得分:-1)
由于元素尚未在DOM中创建,因此您需要使用委托事件才能生效。
请参阅Understanding delegated events
所以你会这样做,但如果你愿意,你可以附加到另一个容器:
$(document).on('click', '.logout',
function() {
// Do your things
})
编辑:我误导了,所有内容都已经在带有PHP回应的DOM中了