html
  • css
  • menu
  • 2012-05-14 46 views 0 likes 
    0

    在style.css中定義了垂直菜單。一旦用戶選擇特定的菜單項,我想激活樣式「活動」。我不能把class="active"放在<a之內,因爲那時這個物品會一直有效。我想要的是一旦選擇了該項目,就應用樣式「主動」。垂直菜單中的活動項目

    <ul id = "vertmenu"> 
        <li> 
         <img style='float: left; margin-right: 5px;' src='images/mailIcon.png'/> 
         <a href="#" onclick="change_page('tables/111.php', 'col2')"><span>111</span></a> 
        </li> 
        <li> 
         <img style='float: left; margin-right: 5px;' src='images/calendarIcon.png'/> 
         <a href="#" onclick="change_page('tables/222.php', 'col2')"><span>222</span></a> 
        </li> 
        <li> 
         <img style='float: left; margin-right: 5px;' src='images/contactsIcon.png'/> 
         <a href="#" onclick="change_page('tables/333.php', 'col2')"><span>333</span></a> 
        </li> 
        <li> 
         <img style='float: left; margin-right: 5px;' src='images/contactsIcon.png'/> 
         <a href="#" onclick="change_page('tables/444.php', 'col2')"><span>444</span></a> 
        </li> 
    </ul> 
    
    <!-- --------- CSS ----------- --> 
        ul#vertmenu li a.active, ul#vertmenu li a.focus { 
         background: none repeat scroll 0 0 #FFCF8B; 
         outline-style: none; 
         color: #AA0000; 
         font-weight: bold; 
         text-decoration: underline; 
         } 
    
        #vertmenu .active{ 
        background: none repeat scroll 0 0 #FFCF8B; 
        outline-style: none; 
        color: #AA0000; 
        font-weight: bold; 
        text-decoration: underline; 
    } 
    

    UPDATE 2;

    <head> 
          <script> 
    var links = document.getElementById("vertmenu").getElementsByTagName("a"); 
    
    for(var i = 0; i < links.length; i++){ 
        links[i].onclick = function(event){ 
         for(var j = 0; j < links.length; j++){ 
          links[j].classList.remove('active'); 
         } 
         event.target.parentNode.classList.add('active'); 
         change_page('tables/'+event.target.innerHTML+'.php','col2'); 
         return false; 
        }; 
    }​ 
    
          </script> 
    </head> 
    
    +0

    我們可以使用jQuery? – ShibinRagh

    回答

    0
    ul#vertmenu li a:active 
    { 
        /*Styling*/ 
    } 
    
    +0

    如果你看看我的示例代碼,你會在CSS樣式表中找到這部分代碼。但出於某種原因,當我按下它們時,「主動」樣式不適用於菜單圖標。 –

    +0

    我認爲這是因爲您使用'a.active'而不是'a:active'。 –

    +0

    @KlausosKlausos我剛剛在jsFiddle中測試了這個,並且項目不會突出顯示。我會和施斌的解決方案一起去。 –

    1

    怎麼這樣呢? http://jsfiddle.net/49M49/

    var links = document.getElementById("vertmenu").getElementsByTagName("a"); 
    
    for(var i = 0; i < links.length; i++){ 
        links[i].onclick = function(event){ 
         for(var j = 0; j < links.length; j++){ 
          links[j].classList.remove('active'); 
         } 
         event.target.parentNode.classList.add('active'); 
         change_page('tables/'+event.target.innerHTML+'.php','col2'); 
         return false; 
        }; 
    }​ 
    

    或jQuery中:

    $("#vertmenu a").each(function(){ 
        $(this).click(function(){ 
         $("#vertmenu a").removeClass('active'); 
         $(this).addClass('active'); 
         change_page('tables/'+$(this).find("span")[0].text()+'.php','col2'); 
        }); 
    }); 
    
    +0

    請看我的更新。我將你的代碼和我的代碼結合起來。現在,只要選擇菜單圖標,樣式就會更改。但是,DIV容器的內容不再改變。正如你所看到的,我打電話onclick =「change_page('tables/333.php','col2')」。 –

    +0

    您需要將change_page移動到事件處理程序中 - 我已更新我的示例。 – Mikey

    +0

    我相信你的代碼應該可以工作。請看我的帖子中的更新。我只是複製你的第一個代碼,並將其放在