在新页面加载时保持 JavaScript 菜单打开

keep javascript menu open on new page load

本文关键字:JavaScript 菜单 新页面 加载      更新时间:2023-09-26

我创建了一个从页面外部滑入的菜单。问题是,当您单击菜单中的项目并加载新页面时,新页面会在菜单关闭的情况下加载。有没有办法告诉浏览器在新页面加载后保持菜单打开?

这是打开菜单的代码

<script>    
$(document).ready(function(){
         $("#closeIcon").hide()
         $(".left").width('0%');
         $(".right").width('100%');
      });
    $(document).ready(function(){
      $("#menuIcon").click(function(){
        $(".left").animate({width:'10%'}, "500");
        $(".right").animate({width:'90%'}, "500");
        $("#nav").animate({
                    left: '30%',
                  }, "500" );
        $("#menuIcon").fadeOut(500)
        $("#closeIcon").fadeIn(500)
      });
    });
    $(document).ready(function(){
      $("#closeIcon").click(function(){
        $(".left").animate({width:'0%'}, "500");
        $(".right").animate({width:'100%'}, "500");
        $("#nav").animate({
                    left: '0',
                }, "500" );
        $("#menuIcon").fadeIn(500)
        $("#closeIcon").fadeOut(500)
      });
    });
    </script>

这是 HTML:

<html>
<div id="menu" >
            <div id="menuIcon">             
                    <a href="javascript: void(0)">
                        <img src="images/menuIcon.png">
                    </a>
            </div>
            <div id="closeIcon">
                    <a href="javascript: void(0)"> 
                        <img src="images/closeIcon.png">
                    </a>
            </div>
        </div>
</html>

<div class="left">
   <div id="nav">                       
  <div id="accordion">          
      </div> <!--ends accordion-->
   </div>
</div>          
<div class="right">
<div id="content"> 
</div><!--ends content-->
</div><!--ends right--> 
当你

离开页面时,你不能保留jQuery事件。如果您离开页面,请在元素上添加类以打开菜单。

您可以在您的链接中传递参数,以了解您必须执行的操作

此外,您只能使用一种$(document).ready();

我认为您应该在新页面中添加一个GET参数,以便知道何时需要显示菜单。

查看此页面以了解有关如何使用jQuery获取URL参数的更多信息:获取转义的URL参数

另外,我想您忘记在示例中添加一些html。这些要素是什么? .left .right #nav

与其在窗口中加载新页面,不如使用 AJAX 加载页面并用新内容替换页面内容?

像这样:

<html>
<div id="menu" >
            <div id="menuIcon">             
                    <a href="javascript: void(0)">
                        <img src="images/menuIcon.png">
                    </a>
            </div>
            <div id="closeIcon">
                    <a href="javascript: void(0)"> 
                        <img src="images/closeIcon.png">
                    </a>
            </div>
</div>
<div id="body">
<!--Body here-->
</div>
</html>

.JS:

$("a").click(function(e){e.preventDefault();loadNew(this.href);});
function loadNew(href){
    $.ajax({
      url: href,
      cache: false
    }).done(function( html ) {
        $( "#body" ).replaceWith( $(html).find("#body") );
      });
}

这也会使过渡看起来令人窒息。

你应该只有一个 $(document).ready() 函数,因为它只会被调用一次。

尝试将代码分解并让 $(document).ready() 调用这些部分,如果仍然遇到问题,请重新发布。

$(document).ready(function(){
         closeIcon();
         menuIcon();
      });
function closeIcon(){
//dostuff
}
function menuIcon(){
//dostuff
}