欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一.概述

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

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

二.應(yīng)用場(chǎng)景

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

三.實(shí)現(xiàn)方法

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

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

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

四.舉個(gè)栗子

 <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)計(jì)報(bào)表</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的樣式

如果當(dāng)前頁面是管理員頁,那個(gè)給所對(duì)應(yīng)的li添加class="active"的屬性,父級(jí)ul的樣式由style="display: none;"修改為style="display: block;",ul的父級(jí)再添加class="active"的屬性,即有了圖一的效果。

以下是我寫的js實(shí)現(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行:取得當(dāng)前url?前的地址,去除url參數(shù)

alert(CURRENT_URL);

結(jié)果為:http://partner.bike.lc/admin/

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

alert(CURRENT_URL_ARR);

結(jié)果為:http:,,partner.bike.lc,admin,

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

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

aert(TEM_URL);

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

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

第5行:將上一步字符串轉(zhuǎn)化為URL形式

aert(TEM_URL);

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

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

...

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

 注:

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

pop用于刪除并返回?cái)?shù)組的最后一個(gè)元素,此步很重要。

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

  • 正則表達(dá)式基本語法及表單驗(yàn)證操作詳解【基于JS】

    正則表達(dá)式基本語法及表單驗(yàn)證操作詳解【基于JS】

    這篇文章主要介紹了正則表達(dá)式基本語法及表單驗(yàn)證操作,較為詳細(xì)的分析了正則表達(dá)式的基本語法以及基于JS實(shí)現(xiàn)的表單正則驗(yàn)證操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-04-04
  • 多種方式實(shí)現(xiàn)JS調(diào)用后臺(tái)方法進(jìn)行數(shù)據(jù)交互

    多種方式實(shí)現(xiàn)JS調(diào)用后臺(tái)方法進(jìn)行數(shù)據(jù)交互

    幾種典型常用的方法如利用控件的AutopostBack屬性、Button提交表單等等,下面為大家分享下JS調(diào)用后臺(tái)方法進(jìn)行數(shù)據(jù)交互示例
    2013-08-08
  • 微信小程序?qū)崿F(xiàn)婚禮邀請(qǐng)函全部流程

    微信小程序?qū)崿F(xiàn)婚禮邀請(qǐng)函全部流程

    本文介紹了如何使用微信小程序技術(shù)制作個(gè)性化的婚禮邀請(qǐng)函,包括頁面布局、交互設(shè)計(jì)和多媒體資源整合,詳細(xì)闡述了從功能需求到頁面設(shè)計(jì)、測(cè)試優(yōu)化以及發(fā)布流程的全面開發(fā)步驟,通過本項(xiàng)目,可以提升創(chuàng)意設(shè)計(jì)和用戶體驗(yàn)優(yōu)化的能力,需要的朋友可以參考下
    2024-10-10
  • js判斷變量是否未定義的代碼

    js判斷變量是否未定義的代碼

    一般如果變量通過var聲明,但是并未初始化的時(shí)候,變量的值為undefined,而未定義的變量則需要通過 "typeof 變量"的形式來判斷,否則會(huì)發(fā)生錯(cuò)誤
    2012-11-11
  • Bootstrap實(shí)現(xiàn)的表格合并單元格示例

    Bootstrap實(shí)現(xiàn)的表格合并單元格示例

    這篇文章主要介紹了Bootstrap實(shí)現(xiàn)的表格合并單元格,涉及bootstrap界面布局相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02
  • 原生JS封裝vue Tab切換效果

    原生JS封裝vue Tab切換效果

    這篇文章主要為大家詳細(xì)介紹了原生JS封裝vue Tab切換效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • xmlplus組件設(shè)計(jì)系列之路由(ViewStack)(7)

    xmlplus組件設(shè)計(jì)系列之路由(ViewStack)(7)

    xmlplus 是一個(gè)JavaScript框架,用于快速開發(fā)前后端項(xiàng)目。這篇文章主要介紹了xmlplus組件設(shè)計(jì)系列之路由,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • firefox事件處理之自動(dòng)查找event的函數(shù)(用于onclick=foo())

    firefox事件處理之自動(dòng)查找event的函數(shù)(用于onclick=foo())

    在ie中,事件對(duì)象是作為一個(gè)全局變量來保存和維護(hù)的。 所有的瀏覽器事件,不管是用戶觸發(fā)的,還是其他事件, 都會(huì)更新window.event 對(duì)象。
    2010-08-08
  • JavaScript實(shí)現(xiàn)緩動(dòng)動(dòng)畫

    JavaScript實(shí)現(xiàn)緩動(dòng)動(dòng)畫

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)緩動(dòng)動(dòng)畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 最新評(píng)論