2009-06-08 35 views
11

Sử dụng jQuery, tôi muốn có thể lấy chỉ mục của li nơi HREF của thẻ neo chứa bằng "#All". (Trong trường hợp này kết quả đúng sẽ là 3)Lấy chỉ mục của phần tử Trong 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> 

Tôi đã thử:

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

... không có may mắn. Tôi đang làm gì sai?

Trả lời

27

này nên làm điều đó:

var index = $("#tabs ul li").index($("li:has(a[href='#All'])")); 
  • Bạn đã chọn tất cả <ul> thay vì tất cả <li> s bạn muốn để có được chỉ số ra khỏi.
  • Bạn cần phải kiểm tra xem <li> yếu tố : có một liên kết với những gì bạn muốn bằng cách sử dụng bộ chọn :has, nếu các yếu tố phù hợp sẽ là <a> bản thân thay vì <li>.

Tested the above và nó mang lại cho tôi câu trả lời đúng, 3, làm chỉ mục dựa trên 0.

+0

Đánh bại tôi một phút +1 –

+0

Điều gì sẽ xảy ra nếu bạn muốn tìm chỉ mục của một phần tử có văn bản được chỉ định? –

1

Tôi nghĩ rằng đó là vì quy tắc đầu tiên của bạn phù hợp với tất cả các phần tử UL, khi bạn muốn nó khớp với tất cả các phần tử LI. Hãy thử:

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

Điều này không có tác dụng. Nó trả về một "-1". –

+0

Vâng, đã không nhận ra về: có phải Paolo đã chỉ ra – robertc

1

Bạn muốn nhận chỉ mục của phần tử bên trong một ngữ cảnh khác, như một phần của tập hợp các phần tử. Xem index() trong tài liệu API để biết thêm thông tin, đặc biệt là các ví dụ.

<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> 
Các vấn đề liên quan