使用javascript,如何选择相对于特定其他li的li

时间:2013-10-06 18:26:39

标签: javascript jquery html jquery-selectors

给出以下html列表:

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

如何在班级电流之前选择li两个实例? 任何纯粹的javascript或jquery解决方案都会很棒!

5 个答案:

答案 0 :(得分:3)

使它更通用,即如果你想选择一个li(第二或第三或你的选择器之前出现的任何实例),那么试试

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

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

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

请记住,prevAll会从选择器开始按顺序返回元素,因此您只需使用prevAll选择器在eq中提供该元素的索引。

<强> Fiddle

答案 1 :(得分:2)

很容易:

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

答案 2 :(得分:2)

你可以尝试

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

答案 3 :(得分: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];

答案 4 :(得分:0)

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

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

n等于您想要超过当前对象的项目数。 +1是因为索引从零开始,而nth-child从1开始。

然后我使用了第n个子选择器来获得正确的元素:

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