jquery包含列表

问题描述:

我正在使用jquery来选择包含特定href链接的列表的单个成员。jquery包含列表

这里是我到目前为止的代码:

<script type="text/javascript" 
src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script> 
$(document).ready(function(){ 
    var page = jQuery(location).attr('href'); 
    if(page $= "home"){ 
     $("'li':contains('index')").addClass("active")}; 
    if(page $= "features"){ 
     $("'li':contains('features')").addClass("active")}; 
    if(page $= "people"){ 
     $("'li':contains('people')").addClass("active") }; 
    if(page $= "accounts"){ 
     $("'li':contains('accounts')").addClass("active")}; 
    if(page $= "blog"){ 
     $("'li':contains('blog')").addClass("active")}; 
    if(page $= "faq"){ 
     $("'li':contains('faq')").addClass("active")};      
}); 
</script> 

的HTML代码如下所示:

<ul id="navigation"> 
    <li><a href="/index" title="Home">Home</a></li> 
    <li><a href="/features" title="Features">Features</a></li> 
    <li><a href="/people" title="People">People</a></li> 
    <li><a href="/accounts" title="account">accounts</a></li> 
    <li><a href="/blog" title="Blog">Blog</a></li> 
    <li><a href="/faq" title="FAQ">FAQ</a></li> 
</ul> 

我似乎无法得到这个工作?我是否正确使用包含功能?

:contains搜索元素的innerText。你想要:has,它会扫描innerHTML

另外,对于href属性,您需要使用attribute selector[href="index"]

$("li:has(a[href*='index'])") 

这将选择一个包含<a>标签包含"index"一个href的<li>

UPDATE:

if(page $= "home") 

你不能真正做到这一点。如果您想查看一个字符串是否以另一个字符结尾,请使用正则表达式(或子字符串)。

jQuery(location).attr('href'); 

为什么要使用jQuery呢?只要做location.href。更好的是,使用location.pathname。然后,你可以失去的if块,并简单地做到这一点:

var page = location.pathname; 
$("li:has(a[href*='"+page+"'])").addClass("active"); 

(您可能需要做page.replace('home', 'index')

+0

我这样做。我能调试和页面变量存储正确路径,但是我没有回应....在查询中,你不必调用任何函数吗? – 2012-07-12 16:54:04

+0

@ChristopherH:'console.log(location.pathname)'说的是什么? “不必调用任何功能”是什么意思? – 2012-07-12 16:55:43

+1

我知道了... location.pathname有一个结束正斜杠,我的href没有。谢谢。 – 2012-07-12 17:24:20