0

有没有办法让下面的选择器更好?
不添加额外的类或 ID?
只选择item-2item-5下数的第一个。
这行得通,但必须有一个更简单的方法。

$first_previous = $($('li.item-5').prevAll('.item-2')[0]);

<ul>
   <li class="item-1">list item 1</li>
   <li class="item-2">Unkown number of item-2 will happen</li>
   <li class="item-2">Unkown number of item-2 will happen</li>
   <li class="item-2">list item 2 Only select this one, not the other #2</li>
   <li class="item-3">list item 3</li>
   <li class="item-4">list item 4</li>
   <li class="item-5">list item 5 Start here</li>
   <li class="item-2">it might even occur after the item-5</li>
</ul>
4

1 回答 1

2

你可以试试:

$(this).siblings('.item-2').eq(1);

(哪里$(this)是一个 jQuery 对象,其中包含一个类的元素.item-5

但是你会想使用http://jsperf.com/之类的东西来找出哪种方式更快!

这里的工作示例

更新

然后试试这个:

$(this).siblings('.item-2').last();

文档.last()

好的...然后尝试:

$(this).prev('.item-2')

用途.prev()

更新 2

循环项目并获得第一个您想要的项目:

$('.item-5').prevAll().each(function() {
    if ($(this).hasClass('item-2')) {
        alert($(this).text());
        return false; // break early
    }
});​

这里的例子

于 2012-08-07T14:44:49.027 回答