2013-03-19 194 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, " ")); 
      }