【问题标题】:.filter(':last') vs. .last().filter(':last') 与 .last()
【发布时间】:2013-06-12 22:05:42
【问题描述】:

我想知道.filter(':last').last()之间有什么区别吗?

对我来说,他们似乎也在做同样的事情,但我是 jQuery 新手。如果结果没有区别,推荐哪一个还是只是个人喜好问题?

【问题讨论】:

  • 他们做同样的事情,在大多数情况下你永远不会注意到差异。
  • 第一个对所有元素进行操作,对每个元素运行一个非标准选择器。第二个只是从 jQuery 对象中获取最后一个元素,并在一个新对象中返回它。

标签: javascript jquery performance filter


【解决方案1】:

last 通过说“给我选择的最后一个元素”来工作。只需两个函数调用和四行代码即可。它不能以更快的方式完成。

filter(':last') 然而,要复杂得多。它是一个更加灵活的系统,允许返回多个元素,如果这是您想要的,或者多个条件,或者两者的混合。它的效率要低得多,因为它必须解决您想要的问题。例如,解析':last' 需要一点时间,而使用last 函数则是一个简单的属性查找。

last 的效率要高得多。

【讨论】:

    【解决方案2】:

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

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

    如您所见,它们做同样的事情(无论如何,就最终结果而言)。

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

    .filter(":last"),虽然从 :last 中获得了最好的(性能方面),但仍然涉及更多的函数调用,并且仍然比 last() 慢 - 尽管它确实有其优势(请参阅@lonesomeday 的答案)。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-11
      • 2014-08-21
      • 2017-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多