2013-10-06 22 views
0

的李鉴于以下HTML列表:,如何选择相对于其他特定李

<ul> 
    ... 
    <li> 
    <li> // <-- item to be selected 
    <li> 
    <li class='current'> 
    <li> 
    <li> 
    <li> 
    ... 
</ul> 

如何选择李向前带班目前李的两个实例? 任何纯粹的JavaScript或jQuery解决方案都会很棒!

+0

如果你知道如何选择一个元素,你在那里的一半。如果你不这样做,那么你需要运行一些教程和文档。 – user2736012

+0

编辑:删除评论,加入问题... –

回答

3

使其更加通用的,也就是说,如果你想选择一个礼可能(第二或第三或在您的选择器之前出现的任何情况),然后尝试

$('li.current').prevAll(':eq(' + n-1 + ')'); 

这里n是你正在谈论的实例#(因为它是基于0的索引)。在你的情况,这将是:

$('li.current').prevAll(':eq(1)'); 

千万记得prevAll从选择开始的顺序返回元素,让你可以提供从该位置的元素的索引prevAlleq选择。

Fiddle

+0

我已经接受了这个答案。其他人是正确的,但我更喜欢这种解决方案的一般性质! –

+0

@ArnolddeJager不客气。这也是我的观点,如果你想在diff索引中选择元素,那么泛型总是有帮助的! – PSL

2

很容易:

$('.current').prev().prev() 
2

您可以尝试

$('.current').prev().prev() 
2

这可以帮助...

var li=document.getElementsByTagName('li'); 
var i, n; 
for(i=0;i<li.length;i++) 
{ 
    if(li[i].className=='current') 
    { 
     n=(i+2)%(li.length); 
    } 
} 
var x=li[n]; 
0

我已经接受了一个答案。我自己的解决方案首先确定要选择的元素的索引:

var index = $('.current').index()-n+1; 

n等于您希望超前当前对象的项目数。 +1是因为索引从0开始,但在1

然后我用的第n个孩子选择以获得正确的元素第n个孩子:

$('ul li:nth-child('+index+')')