2009-06-08 103 views
11

使用jQuery,我希望能夠得到包含錨標籤的HREF等於「#All」的li的索引。 (在這種情況下,正確的結果將是3)獲取UL中元素的索引

<div id="tabs"> 
    <ul> 
     <li><a href="#CPU"><span>CPU</span></a></li> 
     <li><a href="#Pickup"><span>Pickup</span></a></li> 
     <li><a href="#Breakfix"><span>Breakfix</span></a></li> 
     <li><a href="#All"><span>All</span></a></li> 
    </ul> 
</div> 

我曾嘗試:

$("#tabs ul").index($("li a[href='#All']")) 

...沒有運氣。我究竟做錯了什麼?

回答

27

這應做到:

var index = $("#tabs ul li").index($("li:has(a[href='#All'])")); 
  • 你是選擇所有<ul>,而不是所有<li>是你想得到的指標出來的。
  • 你必須檢查<li>元素:具有與您要使用:has選擇什麼樣的鏈接,否則匹配的元素將是<a>本身,而不是<li>

Tested the above它給了我正確的答案3,因爲索引是基於0的。

1

我認爲這是因爲您的第一條規則是匹配所有UL元素,當您希望它匹配所有LI元素時。嘗試:

$("#tabs ul li").index($("li a[href='#All']")) 
+0

這不起作用。它返回一個「-1」。 – 2009-06-08 17:01:54

+0

是的,沒有意識到:保羅指出 – robertc 2009-06-08 17:05:29

1

您希望在另一個上下文中獲取元素的索引,作爲一組元素的一部分。有關更多信息,請參閱API文檔中的index(),特別是示例。

<script type="text/javascript"> 
$(document).ready(function(){ 

    var which_index = $("#tabs ul li a").index($("a[href='#All']")); 
    alert(which_index); 
}); 
</script> 

<body> 
<div id="tabs"> 
    <ul> 
     <li><a href="#CPU"><span>CPU</span></a></li> 
     <li><a href="#Pickup"><span>Pickup</span></a></li> 
     <li><a href="#Breakfix"><span>Breakfix</span></a></li> 
     <li><a href="#All"><span>All</span></a></li> 
    </ul> 
</div> 
</body>