2013-08-21 51 views
0

使用我的代碼我得到-1 ...我應該得到2代替。如何在包含div的ul中使用jquery索引?

我需要得到內ullifocus類的位置,而不考慮像<div class="clm-XXXX">

我應該如何改變我的代碼div標籤? 請注意(我無法更改HTML結構)。

http://jsfiddle.net/4bJtr/3/

<div class="snippet-content"> 
<ul class="layout-1"> 
    <div class="clm-1"> 
     <li>content 1</li> 
    </div> 
    <div class="clm-1"> 
     <li>content 2</li> 
     <li class="focus">content 3</li> 
     <li>content 4</li> 
     <li>content 5</li> 
    </div> 
    <div class="clm-3"> 
     <li>content 6</li> 
     <li>content 7</li> 
    </div> 
</ul> 

+4

不能包裹裏元素的div ......這不是正確的HTML – Richard

+1

''下div' li'?錯誤的HTML。 –

+1

我不是理查,但我必須忍受它,因爲它來自一個CMS與遺產代碼 – GibboK

回答

6

這是不好的HTML,但這裏是您的解決方案:

http://jsfiddle.net/e7rru/

var result = $('.snippet-content li').index($('.focus')); 

你原來的選擇('.snippet-content ul > li.focus')沒有選擇任何事情開始,罪惡CE沒有li元素直屬ul元素(即使它們應該是...),

此外,使用index(),你需要給你想要的指數,其元素的參數指定。根據the docs,index('.focus')應該工作,但由於某種原因在這種情況下,它不是。

+2

+1雖然它可以用'.index('。focus')縮短;' –

+2

@RoryMcCrossan我也這麼認爲,甚至去了[文檔](http://api.jquery.com/index/)確認,但這是不工作的原因:http://jsfiddle.net/zcb3n/ –

+0

偉大的工作...... –

0
var result = $('ul li.focus').index($('.focus')); 

/*and index start from 0 not to 1 

if you get one it means it is in 2nd position*/ 

參考index

相關問題