2013-03-19 236 views
1

我都!jQuery菜單項選擇

我有這樣的菜單:

<ul id="navigation"> 
     <li><a href="index.php">Home</a></li> 
     <li><a href="index.php?page=Entidad">Entidad</a></li> 
    </ul> 

使用jQuery我特林申請。主動當一個菜單項被點擊時,作爲類:

$(document).ready(function(){ 
     $("li a").click(function(){ 
      $(this).parent().find("li").addClass('active'); 
     }); 
    }); 

它不工作,你可以幫幫我嗎?

回答

1

parentali它自己所以你不需要find li。

Live Demo

$(document).ready(function(){ 
     $("li a").click(function(){ 
      $(this).parent().addClass('active'); 
     }); 
}); 

編輯欲從以前的元素移除類,並添加到當前

Live Demo

$(document).ready(function(){ 
     $("li a").click(function(event){ 
      $('#navigation li').removeClass(); 
      $(this).parent().addClass('active'); 
     }); 
}); 
+0

阿迪爾嗨,你的代碼工作正常,但通過點擊該鏈接後,我重新加載頁面,不應用類「麗」元素。 :( – JackLipari 2013-03-19 10:34:59

+0

我使用event.preventDefault();取消鏈接的默認行爲,要麼你這樣做,要麼將事件綁定到li如果你不需要重新加載 – Adil 2013-03-19 10:38:56

+0

問題是我需要創建一個鏈接到一些頁面,並且然後將這個類應用到li元素,但重新加載頁面我失去了jquery動作。你有什麼建議嗎? – JackLipari 2013-03-19 17:44:05

1

當處理的點擊,li是父項目,所以才這樣做:

$(this).parent().addClass('active'); 

你能肯定這一點,不過,因爲我本來以爲明智,使鏈接激活的事情嗎?只是一個觀察。

0

它只是

$(this).parent().addClass('active'); // $(this).parent() selects list element 

不需要有再次找到li元素。

1

一旦超級鏈接被點擊,您的頁面將刷新,所以此代碼$(this).parent().addClass('active')將不會工作。

試試這個:

$(function() { 
       var page = getParameterByName('page'); 
       $("#navigation a:contains('" + page + "')").parent().addClass('active'); 
      }); 

      function getParameterByName(name) 
      { 
       name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); 
       var regexS = "[\\?&]" + name + "=([^&#]*)"; 
       var regex = new RegExp(regexS); 
       var results = regex.exec(window.location.search); 
       if(results == null) 
       return "Home"; 
       else 
       return decodeURIComponent(results[1].replace(/\+/g, " ")); 
      }