簡體   English   中英

在新頁面加載時保持javascript菜單打開

[英]keep javascript menu open on new page load

我創建了一個菜單,可從頁面外部滑入。 問題是,當您單擊菜單中的項目並加載新頁面時,新頁面將在菜單關閉的情況下加載。 有沒有辦法告訴瀏覽器在新頁面加載后保持菜單打開?

這是打開菜單的代碼

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM