2012-07-12 113 views
0

我正在使用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> 

我似乎無法得到這個工作?我是否正確使用包含功能?

回答

2

: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