2013-06-12 53 views
4

我想知道.filter(':last').last()之间是否有区别?.filter(':last')与.last()

对我来说,它看起来像他们一样,但我是新来的jQuery。如果结果没有差异,推荐哪一个,或者只是个人偏好的问题?

+1

他们做同样的事情,对于大多数情况下,你永远不会注意到它们之间的差异。 – adeneo

+2

第一个操作所有元素,针对每个元素运行非标准选择器。第二个只抓取jQuery对象的最后一个元素,并将其返回到一个新对象中。 –

回答

5

last通过说“给我选择的最后一个元素”。它只需要两个函数调用和四行代码即可完成。它不能以更快的方式完成。然而,更复杂的是,这是一个更灵活的系统,允许多个元素被返回,如果这是你想要的,或多个条件,或两者的混合物。它效率低得多,因为它必须制定出你想要的。例如,解析':last'需要一点时间,而使用last函数则是一个简单的属性查找。

last到目前为止效率更高。

1

:last - 选择最后一个匹配的元素。

last() - 将匹配元素的集合减少到集合中的最后一个元素。

正如你所看到的,他们做同样的事情(就最终结果而言,无论如何)。

last()is slightly faster than :last(虽然你可能没有注意到它,但它总是很好的知道)。

.filter(":last"),虽然作出最佳(性能明智)出:last,还涉及到更多的函数调用和仍比last()慢 - 虽然它确实有它的优势(见@lonesomeday的回答那些)。

然而,我的建议是一般使用last()而不是前者。

+2

@lonesomeday对不起,我应该睡一会儿.. – lifetimes