javascript - 切换菜单不工作 JQuery

标签 javascript php jquery drop-down-menu toggle

我的网站有登录系统。当单击 menu 并且用户未登录时,将调用 showpopup() 函数并显示注册表单。

当点击menu并且用户登录时,它将显示dropdownafterlogin()将被调用。

问题是,我想在单击菜单时切换下拉菜单。但是一旦dropdown打开,只有当我点击dropdowndropdownA外部时,我才能关闭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 中只需返回 truefalse..

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

相关文章:

javascript - 在可变宽度站点的两侧均匀隐藏图像

javascript - iframe 的 srcdoc 总是 HTML 文档吗?

javascript - AngularJS 与 ng 重复中的限制和过滤器冲突

php - 获取 15 至 30 分钟前的数据

php - 我想复制我的 WordPress 网站,但如何处理数据库?

php - 无法制作表格。

Javascript/JQuery 连续循环主体背景颜色

javascript - 正则表达式 javascript 中的 $1

javascript - 第一轮后幻灯片放映索引设置为 1

javascript - YQL中可以添加UserAgent吗?