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

时间:2013-09-24 22:17:35

标签: javascript jquery collapse

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

这是打开菜单的代码

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

4 个答案:

答案 0 :(得分:0)

离开页面时无法保留jQuery事件。 如果您离开页面,请在元素上添加class以打开菜单。

您可以在您的链接中传递参数,以了解您必须采取的行动

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

答案 1 :(得分:0)

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

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

另外,我想你忘记在你的例子中添加一些HTML。那些元素是什么? .left .right #nav

答案 2 :(得分:0)

为什么不使用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") );
      });
}

这将使过渡看起来更加平稳。

答案 3 :(得分:0)

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

尝试拆开你的代码并让你的$(文件).ready()调用这些部分,然后重新发布,如果你仍然遇到麻烦。

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

function closeIcon(){
//dostuff
}

function menuIcon(){
//dostuff
}