亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
javascript - 怎么讓二級(jí)菜單的子菜單高亮的同時(shí)其對應(yīng)的父級(jí)菜單也高亮。
PHP中文網(wǎng)
PHP中文網(wǎng) 2017-04-11 12:43:15
[JavaScript討論組]

網(wǎng)上找的代碼,但是二級(jí)菜單亮的同時(shí)對應(yīng)的父級(jí)菜單就不亮了,我補(bǔ)充了一點(diǎn),但是點(diǎn)擊二級(jí)菜單只有第一個(gè)父級(jí)菜單高亮,與二級(jí)菜單對應(yīng)的沒高亮。怎么用$(this)使得點(diǎn)擊每個(gè)子菜單,對應(yīng)的父級(jí)菜單也會(huì)亮。

<p class="menu">
<ul id='menu'>

<li id=''><a class="" href="first.html">首頁</a></li>

<li id='first-menu'><a class="" href="second.html">second</a>
    <ul id='second-menu'>
    <li><a href="second-son1.html" >second-son1</a></li>
    <li><a href="second-son2.html" >second-son2</a></li>    
    </ul>
</li>

<li id='first-menu'><a class="" href="third.html">third</a>
    <ul id='second-menu'>
    <li><a href="third-son1.html" >third-son1</a></li>     
    </ul>
</li>

<li id=''><a class="" href="fourth.html">fourth</a></li>

</ul>
</p>
<script type="text/javascript" src="jquery.min.js"></script> 
<script type="text/javascript">
  //設(shè)置變量urlstr為當(dāng)前地址
  var urlstr = location.href; 

  //alert((urlstr + '/').indexOf($(this).attr('href')));
  //設(shè)置變量urlstatus為false
  var urlstatus=false;
  //循環(huán)遍歷HTML DOM里id為menu下邊所有的a標(biāo)簽
  $("#menu a").each(function (){
  //如果當(dāng)前ur與a標(biāo)簽href屬性相等并且當(dāng)前href屬性不為空 
    if ((urlstr + '/').indexOf($(this).attr('href')) > -1&&$(this).attr('href')!='') {
    //為當(dāng)前a標(biāo)簽添加cur樣式,設(shè)置urlstatus變量為true
      $(this).addClass('cur'); urlstatus = true;
    } else {
    //否則為當(dāng)前a標(biāo)簽移除cur樣式
      $(this).removeClass('cur');
    }
  });

  if($("#first-menu").has('ul') && $("#second-menu a").hasClass('cur')){ 
         $("#first-menu a").eq(0).addClass('cur'); urlstatus = true;         
  }   
//如果urlstatus為false,為html dom中id為menu 下的第一個(gè)a標(biāo)簽添加 cur樣式
  if (!urlstatus) {$("#menu a").eq(0).addClass('cur'); }
</script>
PHP中文網(wǎng)
PHP中文網(wǎng)

認(rèn)證高級(jí)PHP講師

全部回復(fù)(3)
阿神

研究了一晚上做出來了,我的思路是在子菜單擁有當(dāng)前樣式cur的基礎(chǔ)上,再給父級(jí)菜單的a元素加上當(dāng)前樣式。用if判斷當(dāng)前的子菜單是否擁有cur樣式,如果有,就給當(dāng)前父級(jí)菜單a元素加上cur樣式。第一次嘗試的判斷不明確,始終加的是第一個(gè)名為second的父級(jí)菜單,應(yīng)該用$this。于是就遍歷擁有二級(jí)菜單的子菜單,取得當(dāng)前擁有cur樣式的子菜單,把當(dāng)前父欄目的同胞為a的元素,也就是父級(jí)菜單的樣式添加為cur,這樣一來就好了。上面的id重復(fù)了,改成class,多謝下面的兄臺(tái)提醒,但是為什么谷歌瀏覽器沒有報(bào)錯(cuò)?

<p class="menu">
<ul id='menu'>

<li ><a class="" href="first.html">首頁</a></li>

<li class='first-menu'><a class="" href="second.html">second</a>
    <ul >
    <li><a href="second-son1.html" >second-son1</a></li>
    <li><a href="second-son2.html" >second-son2</a></li>    
    </ul>
</li>

<li class='first-menu'><a class="" href="third.html">third</a>
    <ul >
    <li><a href="third-son1.html" >third-son1</a></li>     
    </ul>
</li>

<li ><a class="" href="fourth.html">fourth</a></li>

</ul>
</p>
<script type="text/javascript" src="jquery.min.js"></script> 
<script type="text/javascript">
  //設(shè)置變量urlstr為當(dāng)前地址
  var urlstr = location.href; 

  //alert((urlstr + '/').indexOf($(this).attr('href')));
  //設(shè)置變量urlstatus為false
  var urlstatus=false;
  //循環(huán)遍歷HTML DOM里id為menu下邊所有的a標(biāo)簽
  $("#menu a").each(function (){
  //如果當(dāng)前ur與a標(biāo)簽href屬性相等并且當(dāng)前href屬性不為空 
    if ((urlstr + '/').indexOf($(this).attr('href')) > -1&&$(this).attr('href')!='') {
    //為當(dāng)前a標(biāo)簽添加cur樣式,設(shè)置urlstatus變量為true
      $(this).addClass('cur'); urlstatus = true;
    } else {
    //否則為當(dāng)前a標(biāo)簽移除cur樣式
      $(this).removeClass('cur');
    }
  });
  //遍歷所有父級(jí)菜單的a標(biāo)簽也就是子菜單
$(".first-menu a").each(function(){
    //判斷擁有cur樣式的a標(biāo)簽
    if($(this).hasClass('cur')){  
    //把當(dāng)前擁有cur樣式a標(biāo)簽的祖輩的同胞為a的元素,也就是父級(jí)菜單的樣式添加為cur    
        $(this).parents('ul').siblings('a').eq(0).addClass('cur'); 
        //設(shè)置urlstatus變量為true 
        urlstatus = true;            
    }
})
//如果urlstatus為false,為html dom中id為menu 下的第一個(gè)a標(biāo)簽添加 cur樣式
  if (!urlstatus) {$("#menu a").eq(0).addClass('cur'); }
</script>

擴(kuò)展:若是三級(jí)菜單,使得點(diǎn)擊三級(jí)菜單的子欄目高亮的同時(shí)父級(jí)欄目一級(jí)和二級(jí)也高亮,該如何做呢?思路是什么呢?

高洛峰

不是很懂你說的高亮是什么意思。想呈現(xiàn)的效果是是,鼠標(biāo)放到一級(jí)菜單,然后出現(xiàn)下拉菜單,然后鼠標(biāo)放到下拉菜單,然后又出現(xiàn)子菜單。鼠標(biāo)停留的菜單要變色么(高亮)? 如果是這個(gè)意思,css 也可以實(shí)現(xiàn)。用jQuery 就是事件綁定啊。

天蓬老師

這個(gè)html寫法本身就有問題id=first-menu就有兩個(gè).
另外,這類方法直接用css就可以了,比如li:hover的時(shí)候高亮父類

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關(guān)于我們 免責(zé)申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長!
關(guān)注服務(wù)號(hào) 技術(shù)交流群
PHP中文網(wǎng)訂閱號(hào)
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號(hào)
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)