2011-10-11 103 views
6

我有一個DOM結構,看起來像這樣:獲取當前元素的所有匹配的元素索引在DOM

<div class="chapter"> 
    <section></section> 
    <section></section> 
</div> 
<div class="chapter"> 
    <section></section> 
    <section></section> 
    <section class="current"></section> 
    <section></section> 
</div> 
<div class="chapter"> 
    <section></section> 
    <section></section> 
    <section></section> 
    <section></section> 
</div> 

我想要得到的部分的索引號與一類「當前的「,橫跨所有部分。在這個例子中,索引是5,因爲它是第5部分的標籤並且包含一個當前類。

我該如何使用jQuery獲取?

我已經開始用它來獲取DOM中的所有部分的列表:

var sections = $('section'); 

我已經試過這樣的事情,試圖得到我想要的結果:

alert($(sections+'.current').index()); 

返回一個js錯誤。

我在這裏錯過了什麼?謝謝!

回答

11

在您的代碼$('section')會返回所有部分作爲jQuery對象。他們當中獲得其中有一類current你可以做這部分的指標:

sections.index($(".current")); 

這將返回你帶班電流部分的相對指標,這將是4作爲 $('sections')將返回你一個jQuery對象數組(0索引),其中包含所有節的元素。所以匹配的元素是第5個元素,索引將返回4. 希望這fiddle幫助。

+0

這似乎應該工作,事實上,我在這裏測試它http://jsfiddle.net/uae2U/它,但不幸的是在我的代碼中它返回-1。這讓我更接近,所以謝謝! – Cory

+0

如果它返回-1,那麼在選擇器中可能有一些錯誤。如果沒有匹配,index()將返回-1。 –

0

改變這樣

var sections = 'section'; 

你的代碼是這樣做的,它的錯誤

alert($($('section')+'.current').index()); 
+0

謝謝,但我沒看到如何幫助。設置var sections ='section';除了創建一個文本字符串之外別無它法。 – Cory

+0

如果你應該像這樣使用var sections = $('section'); 然後使用這個警報(sections.hasClass('current')。index()); –

6
$('.current').index('section'); 

參見index的文檔。

如果選擇器字符串作爲參數傳遞,則.index()將返回一個整數,指示原始元素相對於選擇器匹配的元素的位置。如果找不到元素,則.index()將返回-1。

+0

這個也可以。謝謝! – Cory

相關問題