简体   繁体   English

javascript菜单在页面加载之前加载

[英]javascript menu loads before page is loaded

My site has a javascript menu that loads before the page is loaded, need help in preventing the menu from being displayed unless clicked on. 我的网站上有一个javascript菜单,该菜单在加载页面之前即已加载,除非单击该菜单,否则需要帮助以防止其显示。 The header code containing the menu is: 包含菜单的标题代码为:

<header>
    <div class="logo">
        <a href="index.html"><img src="images/logo.png" alt=""/></a>
    </div>
    <div class="button" id="show">
        <a href="#">Menu <span>+</span> <span style="display:none;">-</span></a>
    </div>
    <div class="clear"></div>

    <nav class="vertical menu">
        <ul>
            <li class="current_page_item0"><a href="docs/home.html">Home</a></li>
            <li><a href="docs/mon.html">Monday</a></li>
            <li><a href="docs/tue.html">Tuesday</a></li>
            <li><a href="docs/wed.html">Wednesday</a></li>
            <li><a href="docs/thur.html">Thursday</a></li>
            <li><a href="docs/fri.html">Friday</a></li>
            <li><a href="docs/sat.html">Saturday</a></li>
            <li><a href="docs/sun.html">Sunday</a></li>
            <li><a href="docs/contact.html">Contact</a></li>
        </ul>
    </nav>
</header>

the javascript code enabling it is.. 启用它的JavaScript代码..

<script src="js/jquery.min.js"></script>
<script type="text/javascript">
    $('.menu').hide();
    $('#show').click(function (){
        $(".menu").toggle();
        $("span").toggle();
    });
</script>

The menu is being rendered faster, than your script gets executed. 菜单的渲染速度比脚本的执行速度快。 You need to hide the menu from CSS, so it will stay hidden until your script will attach event listeners. 您需要从CSS隐藏菜单,因此菜单将保持隐藏状态,直到您的脚本将附加事件侦听器为止。

Here's working example. 这是工作示例。

 // Wait for DOM to be ready. $(function() { // Keep elements in variables to avoid unnecessary $() calls. var $menu = $('.menu'), $flag = $('span'); // Attach event listener. $('#show').on('click', function() { $menu.toggle(); $flag.toggle(); }); }); 
 /* Hide menu on page load. */ .menu { display: none; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <header> <div class="logo"> <a href="index.html"> <img src="images/logo.png" alt="" /> </a> </div> <div class="button" id="show"> <a href="#">Menu <span>+</span> <span style="display:none;">-</span></a> </div> <div class="clear"></div> <nav class="vertical menu"> <ul> <li class="current_page_item0"><a href="docs/home.html">Home</a> </li> <li><a href="docs/mon.html">Monday</a> </li> <li><a href="docs/tue.html">Tuesday</a> </li> <li><a href="docs/wed.html">Wednesday</a> </li> <li><a href="docs/thur.html">Thursday</a> </li> <li><a href="docs/fri.html">Friday</a> </li> <li><a href="docs/sat.html">Saturday</a> </li> <li><a href="docs/sun.html">Sunday</a> </li> <li><a href="docs/contact.html">Contact</a> </li> </ul> </nav> </header> 

Instead of hiding them using JQuery use CSS 与其使用JQuery隐藏它们,不如使用CSS

.menu {
  display:none;
}

And then you can do whatever you were doing before 然后您可以做之前做的任何事情

    $('#show').click(function (){
        $(".menu").toggle();
        $("span").toggle();
    });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM