给出以下html列表:
<ul>
...
<li>
<li> // <-- item to be selected
<li>
<li class='current'>
<li>
<li>
<li>
...
</ul>
如何在班级电流之前选择li两个实例? 任何纯粹的javascript或jquery解决方案都会很棒!
答案 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+')')