0

给定以下 html 列表:

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

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

4

5 回答 5

3

使其更通用,即如果您想选择一个 li 可能(第二个或第三个或出现在您的选择器之前的任何实例),然后尝试

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

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

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

请记住 prevAll 按从选择器开始的顺序返回元素,因此您可以在选择器中提供该位置的元素prevAll索引eq

小提琴

于 2013-10-06T18:32:34.390 回答
2

This may help...

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];
于 2013-10-06T18:32:34.213 回答
2

非常简单地:

$('.current').prev().prev()
于 2013-10-06T18:28:23.480 回答
2

你可以试试

$('.current').prev().prev()
于 2013-10-06T18:28:46.667 回答
0

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

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

n 等于您希望在当前对象之前的项目数。+1 是因为索引从零开始,而第 n 个子元素从 1 开始。

然后我使用 nth-child 选择器来获取正确的元素:

$('ul li:nth-child('+index+')')
于 2013-10-06T19:14:03.053 回答