2013-06-25 26 views
0

導航菜單 - 菜單需要時,頁面被點擊另一個鏈接刷新保持開放單擊手風琴菜單中的鏈接時,一旦頁面刷新了新的html內容,如何保持手風琴菜單打開?

ul class="menu"> 
        <li class="item1"><a href="#">Hardware</a> 
         <ul> 
          <li class="subitem1"><a href="receipt-printer.html">Receipt Printer</a></li> 
          <li class="subitem2"><a href="barcode-scanner.html">Barcode <span class="item-move2">Scanner</span> </a></li> 
          <li class="subitem3"><a href="card-swipes.html">Card Swipes</a></li> 
          <li class="subitem4"><a href="weighscales.html">Weighscales</a></li> 
          <li class="subitem5"><a href="touchscreens.html">Touchscreens</a></li> 
          <li class="subitem6"><a href="label-printer.html">Label Printer</a></li> 
          <li class="subitem7"><a href="customer-display.html">Customer <span class="item-move2"> Display</span></a></li> 
          <li class="subitem8"><a href="wap.html">WAP</a></li> 
         </ul> 
        </li> 
        <li class="item2"><a href="#">Software</a> 
         <ul> 
          <li class="subitem1"><a href="step1/install-ootpik.html">Installing ootpik</a></li> 
          <li class="subitem2"><a href="step1/pref-security.html">Preferences &amp; <span class="item-move2">Security</span></a></li> 
         </ul> 
        </li> 
       </ul> 

菜單 端腳本來操作摺疊式菜單腳本

<!--initiate accordion--> 
<script type="text/javascript"> 
    $(function() { 

     var menu_ul = $('.menu > li > ul'), 
       menu_a = $('.menu > li > a'); 

      menu_ul.hide(); 

     menu_a.click(function(e) { 
      e.preventDefault(); 
      if(!$(this).hasClass('active')) { 
       menu_a.removeClass('active'); 
       menu_ul.filter(':visible').slideUp('normal'); 
       $(this).addClass('active').next().stop(true,true).slideDown('normal'); 
      } else { 
       $(this).removeClass('active'); 
       $(this).next().stop(true,true).slideUp('normal'); 
      } 

     }); 

    }); 
</script> 

網站查看手風琴現在: http://www.ootpik.info/lauren/ootpik5/receipt-printer.html

+1

你確實應該嘗試將這一數字減少到僅僅需要什麼來解釋和演示問題/問題。這是一大堆代碼。你還應該在問題的主體部分詳細解釋問題/問題,而不僅僅是問題的標題。 –

+0

代碼更改....我可以保持打開狀態,但我沒有正確刷新。它將鎖定手風琴 – Lauren

+0

我認爲問題是如何讓我們的JavaScript超越http請求/響應...不,我只是在開玩笑,我也不明白這個問題。如果你有一些後端,你可以通過會話來配置你的javascript。 – rusln

回答

1

我建議你嘗試另一個菜單選擇器根據你當前的URL(因爲當你的頁面刷新你不能得到菜單項之前點擊)。它可能是這樣的東西(對於receipt-printer.html頁面):

$('.menu > li > ul:not(:has(li > a[href="receipt-printer.html"]))') 

這是硬編碼,但我認爲它可以爲你工作。 您可以從window.location.pathname獲得當前頁面的值。例如像這樣:

var url = window.location.pathname.split('/')[3] //because on your site you have relative url lauren/ootpik5/receipt-printer.html 

但它也硬編碼,我不知道它會適用於您的網站上的任何網址。

算法如此充滿例子是:

var splittedUrl = window.location.pathname.split('/'); 
var href = splittedUrl[splittedUrl.length - 1]; 
var menu_ul = $('.menu > li > ul:not(:has(li > a[href="' + href + '"]))'); 
munu_ul.hide(); 
+0

我想我會使用不同的菜單選擇器,這只是隱藏我的導航完全離開頁面,但是謝謝 – Lauren

+0

我在使用這種手風琴菜單系統時找到了一種方法。無論您想使用什麼,您都必須使用javascript或ajax動態獲取所有頁面內容。這也會遇到另一個無法使用後退或前進按鈕的問題。所以從那時起,你需要使用hashchange來使用所有的前進和後退按鈕 – Lauren

+0

如果你想使用ajax並保持後退和前進按鈕的功能,請查看歷史API https://developer.mozilla.org/en -US/docs/Web/Guide/DOM/Manipulating_the_browser_history。它不適用於所有瀏覽器(http://caniuse.com/#search=history),但存在一些polyfills:https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills –