2010-11-02 66 views
26

我有一个特定类“地点”的跨度列表,其中一些类具有“激活”类。有没有办法选择类“激活”和最后一个的第一个项目?使用jQuery选择具有特定类的第一个元素和最后一个元素

<span class="place" onclick="activate();">1</span> 
<span class="place" onclick="activate();">2</span> 
<span class="place activated" onclick="activate()">3</span> 
<span class="place activated" onclick="activate();">4</span> 
<span class="place activated" onclick="activate();">5</span> 
<span class="place activated" onclick="activate();">6</span> 
<span class="place" onclick="activate();">7</span> 

回答

37
var firstspan = $('span.activated:first'), 
    lastspan = $('span.activated:last'); 

顺便说一句,如果你使用jQuery,什么所有的在线点击事件的?

你可以添加一些代码,就像这样:

$('span.place').click(function() { 
    activate(); // you can add `this` as a parameter 
       // to activate if you need scope. 
}); 
+0

+1最快的正确答案;-) – netadictos 2010-11-02 22:34:04

+1

我有很多这些跨度,并在他们每一个theres这激活功能与不同的属性,所以我认为它更好的方式。感谢您的回复 – tsusanka 2010-11-02 22:43:17

0
var first = $('.activated:first'); 
var last = $('.activated:last'); 
13
var places = $('span.place.activated'); 

var first = places.first(), 
    last = places.last(); 

说明:span.places.activated选择将得到所有<span> s的两个 “到位” 和 “激活” 类。然后,first()last()方法将返回该集合的第一个和最后一个项目。这比使用:first:last假选择器更好,因为选择费用很高,这样我们只做一次选择,然后依靠(廉价)数组操作获取第一个和最后一个元素。

+0

+1,因为没有运行选择器两次。 – user113716 2010-11-03 00:35:45

+0

+1因为我同意帕特里克。这可能是更好的答案! – Stephen 2010-11-03 03:57:11

1

如果你关心性能,最好用$('span.place.activated')代替$('.activated:first')。 但是,在这种情况下,第二个变体也是正确的。

相关问题