我的网站有登录系统。当单击 menu
并且用户未登录时,将调用 showpopup()
函数并显示注册表单。
当点击menu
并且用户登录时,它将显示dropdown
和afterlogin()
将被调用。
问题是,我想在单击菜单
时切换下拉菜单
。但是一旦dropdown
打开,只有当我点击dropdown
或dropdownA
外部时,我才能关闭dropdown
>.
如何通过单击菜单
来切换/关闭下拉列表
?
index.php
<div id="menu">Menu</div>
<div id="dropdown"> //this drop down is hidden
<a href="#" id="a">A</a>
</div>
<div id="dropdownA"> //this drop down is also hidden
<p>Hello</p>
</div>
login.php
<?php
ob_start();
session_start();
include_once('database.php');
if(isset($_SESSION['username'])){
echo '1';
return false;
}
if (!(isset($_SESSION['username']))){
echo '0';
return false;
}
ob_end_flush();
?>
script.js
$('#menu').click(function (e) {
e.preventDefault();
e.stopPropagation();
$.post("login.php", function(data) {
if(data == "1"){
afterLogin();
return false;
} else if(data == "0"){
showpopup();
return false;
}
});
});
function showpopup()
{//sign up form
$("#signupForm").fadeIn();
$("#signupForm").css({"visibility":"visible","display":"block"});
}
function afterLogin() {
$('#menu').on('click', function () {
$("#dropdown").show(function(){
document.body.addEventListener('click', boxCloser, false);
});
});
$("#a").click(function() {
$("#dropdownA").toggle();
});
function boxCloser(e){
if(!$(e.target).closest('#dropdown, #dropdownA').length){
document.body.removeEventListener('click', boxCloser, false);
$('#dropdown, #dropdownA').hide();
}
}
}
最佳答案
尝试这样。调用函数形式$.post()
did 方法。
$.post("login.php", function(data) {
}).done(function(data){
if(data === true){
afterLogin();
} else if(data === false){
showpopup();
}
});
在 php 中只需返回 true
或 false
..
<?php
ob_start();
session_start();
include_once('database.php');
if(isset($_SESSION['username'])){
echo true;
}
if (!(isset($_SESSION['username']))){
echo false;
}
ob_end_flush();
?>
有关更多信息,请参阅文档 https://api.jquery.com/jquery.post/
关于javascript - 切换菜单不工作 JQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41916799/