javascript - 检查导航栏是否被点击

标签 javascript jquery html css

我有一个导航栏,想在点击外面时关闭它。我唯一需要检查的是 body 的点击事件。

var navBtnActive = true;

function toggleMenu(){
    navBtnActive = !navBtnActive;
    $("#navContent").slideToggle();
}

$('body').click(function() {
     // if( clicked target is NOT the menu ){ 
      // if(navBtnActive){ // just if the menu is open
         //  toggleMenu();
     // }
    // }
});
#navContainer {
    position: relative;
    display: inline-block;
}

#navContent button {
    display: block;
    width: 100px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

    <div id="navContainer">
        <button onclick="toggleMenu()">Menu</button>
        <div id="navContent">
            <button onclick="toggleMenu()">Slider</button>
            <button onclick="toggleMenu()">Calculator</button>
            <button onclick="toggleMenu()">Imageupload</button>
            <button onclick="toggleMenu()">Settings</button>
            <button onclick="toggleMenu()">Search</button>
            <button onclick="toggleMenu()">Servercall</button>
        </div>
    </div>

正如您在下面看到的,我的 $('body').click(function() 获得了关闭它的代码。我只是想获得一种方法来检查被点击的对象是否是菜单本身与否。如果没有,请关闭菜单。

最佳答案

你好,你可以试试这个代码

var navBtnActive = true;

function toggleMenu(e) {
  navBtnActive = !navBtnActive;
  $("#navContent").slideToggle();
}


jQuery(document).on('click', function() {
  $("#navContent").slideUp();
});
jQuery('#navContainer').on('click', function(e) {
  e.stopPropagation();
});
#navContainer {
  position: relative;
  display: inline-block;
}

#navContent button {
  display: block;
  width: 100px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="navContainer">
  <button onclick="toggleMenu()">Menu</button>
  <div id="navContent">
    <button onclick="toggleMenu()">Slider</button>
    <button onclick="toggleMenu()">Calculator</button>
    <button onclick="toggleMenu()">Imageupload</button>
    <button onclick="toggleMenu()">Settings</button>
    <button onclick="toggleMenu()">Search</button>
    <button onclick="toggleMenu()">Servercall</button>
  </div>
</div>

关于javascript - 检查导航栏是否被点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45832441/

相关文章:

Javascript setInterval 未运行

javascript - 如何从服务器端判断客户端是否支持 http/2

javascript - 数组过滤没有按预期工作

jquery - 通过 jQuery 控制 CSS 边框

javascript - 分离标签的插件(如 stackoverflow 的输入标签界面)

javascript - 悬停时背景大小不会更新

html - 如何创建切出的六边形形状?

HTML5 中的 Javascript 表单验证

javascript - 尝试获取 localstorage 中的对象索引,以便我可以使用 javascript 或 jquery 从 localStorage 存储中删除/删除该对象

javascript - 在 HTML 5 的 Canvas 中制作数据图