最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS實現(xiàn)多級菜單中當前菜單不隨頁面跳轉樣式而發(fā)生變化

 更新時間:2017年05月30日 09:32:06   作者:月光如注  
本文介紹了JQuery巧妙實現(xiàn)多級菜單中當前菜單不隨頁面跳轉樣式發(fā)生變化,實現(xiàn)方法非常簡單,感興趣的朋友一起看看吧

一.概述

        本文介紹了JQuery巧妙實現(xiàn)多級菜單中當前菜單不隨頁面跳轉樣式發(fā)生變化,貌似沒看懂啥意思?

看圖說話:就是點二級或多級菜單時,父級展開,當前菜單是被選中狀態(tài),這下明白了吧?

二.應用場景

         當一個項目使用公共模板文件時(如上圖的左側菜單欄),我們給每個子菜單添加鏈接時,點擊頁面跳轉樣后還是公共模板的樣式,這時就需要實現(xiàn)動態(tài)加載當前菜單的樣式。

三.實現(xiàn)方法

第一種:.通過php傳遞變量,模板頁面通過接收這些變量來實現(xiàn)當前頁面的菜單選中與否,父級展開等這些樣式

缺點:雖然實現(xiàn)簡單,但是每個頁面都需要php傳遞變量,很繁瑣,這種方法不推薦,故不再贅述!

第二種:通過比對當前菜單里的a標簽的href值與瀏覽器的url的值,判斷a標簽里href屬性值是屬于瀏覽器url中的一部分,即表示包含該a標簽的菜單應該時被選中狀態(tài),在將樣式賦予該菜單及對應的父級菜單。

四.舉個栗子

 <ul class="sidebar-menu">
  <li class="header">主菜單</li>
  <li class="treeview">
   <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
   <i class="fa fa-users"></i> <span>用戶管理</span>
   <span class="pull-right-container">
    <i class="fa fa-angle-left pull-right"></i>
   </span>
   </a>
   <ul class="treeview-menu">
   <li><a href="{{ path('agent') }}" rel="external nofollow" ><i class="fa fa-circle-o"></i> 代理商</a></li>
   <li><a href="{{ path('client') }}" rel="external nofollow" ><i class="fa fa-circle-o"></i> 委托人</a></li>
   <li><a href="{{ path('cs_staff') }}" rel="external nofollow" ><i class="fa fa-circle-o"></i> 客服</a></li>
   <li><a href="{{ path('admin') }}" rel="external nofollow" ><i class="fa fa-circle-o"></i> 管理員</a></li>
   </ul>
  </li>
  <li class="treeview">
   <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
   <i class="fa fa-bicycle"></i> <span>車輛管理</span>
   <span class="pull-right-container">
    <i class="fa fa-angle-left pull-right"></i>
   </span>
   </a>
   <ul class="treeview-menu">
   <li><a href="{{ path('bike') }}" rel="external nofollow" ><i class="fa fa-circle-o"></i> 單車</a></li>
   </ul>
  </li>
  <li class="treeview">
   <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
   <i class="fa fa-fw fa-cny"></i> <span>統(tǒng)計報表</span>
   <span class="pull-right-container">
    <i class="fa fa-angle-left pull-right"></i>
   </span>
   </a>
   <ul class="treeview-menu">
   <li><a href="{{ path('report')}}" rel="external nofollow" ><i class="fa fa-circle-o"></i> 單車收益</a></li>
   </ul>
  </li>
  </ul>

注:上述樣式是bootstamp的樣式

如果當前頁面是管理員頁,那個給所對應的li添加class="active"的屬性,父級ul的樣式由style="display: none;"修改為style="display: block;",ul的父級再添加class="active"的屬性,即有了圖一的效果。

以下是我寫的js實現(xiàn)代碼,放在公共js文件即可

 var CURRENT_URL = window.location.href.split('?')[0];
 CURRENT_URL_ARR=CURRENT_URL.split("/",6); 
 for (i=0;i<CURRENT_URL_ARR.length ;i++ ){
 TEM_URL = CURRENT_URL_ARR.join(",");
 TEM_URL = TEM_URL.replace(/,/g,"/");
 $('.sidebar-menu').find('a').filter(function () {
  return this.href ==TEM_URL+"/";
 }).parent('li').addClass('active').parent('ul').css("display","block").parent('li').addClass('active');
 CURRENT_URL_ARR.pop();
 }

解釋:

第1行:取得當前url?前的地址,去除url參數(shù)

alert(CURRENT_URL);

結果為:http://partner.bike.lc/admin/

第2行:把url里按“/”再次分割成字符串數(shù)組,后面的6為了精確的找到對應控制器及方法,按需設著

alert(CURRENT_URL_ARR);

結果為:http:,,partner.bike.lc,admin,

第3行:循環(huán)匹配url

第4行:再將數(shù)組轉化為字符串

aert(TEM_URL);

循環(huán)得到的結果依次為:

http:,,partner.bike.lc,admin,
http:,,partner.bike.lc,admin
http:,,partner.bike.lc
...

第5行:將上一步字符串轉化為URL形式

aert(TEM_URL);

循環(huán)得到的結果依次為:

http://partner.bike.lc/admin/
http://partner.bike.lc/admin
http://partner.bike.lc

...

第6-10行:遍歷菜單欄里的所有a標簽,判斷循環(huán)里的url是否有等于a標簽的href值,如果有加上所需的樣式

 注:

this.href得到的是完整的URL地址;

pop用于刪除并返回數(shù)組的最后一個元素,此步很重要。

好了,以上所述是小編給大家介紹的JS實現(xiàn)多級菜單中當前菜單不隨頁面跳轉樣式而發(fā)生變化 。不知道大家理解了沒有。主要是理解實現(xiàn)思路,樣式可根據(jù)自身情況調整~

相關文章

最新評論

河源市| 祁阳县| 桐乡市| 府谷县| 仪征市| 岫岩| 靖远县| 河西区| 镇江市| 饶平县| 肥西县| 自贡市| 探索| 和平区| 鲜城| 台山市| 文昌市| 泰宁县| 宁陕县| 双峰县| 花垣县| 丹江口市| 平原县| 平远县| 永济市| 衡东县| 南通市| 通山县| 永修县| 泉州市| 富民县| 绥宁县| 西华县| 山阴县| 榆林市| 股票| 海晏县| 望奎县| 嘉善县| 山西省| 阳高县|