jQuery: сначала по сравнению с .first ()

.first() метод был добавлен в jQuery 1.4.

:first селектор был вокруг с тех пор 1.0.

Из документов:

:first

:first псевдокласс эквивалентен :eq(0). Это могло также быть записано как :lt(1). В то время как это соответствует только единственному элементу, :first-child может соответствовать больше чем одному: Один для каждого родителя.

.first()

Учитывая объект jQuery, который представляет ряд элементов DOM, .first() метод создает новый объект jQuery из первого элемента соответствия.


Это кажется этим .first() фильтр, который возвращает другой объект jQuery, в то время как :first просто селектор.

Но, они могут оба использоваться для выполнения того же самого.

Так, когда нужно использоваться вместо другого? Производительность? Обеспечьте примеры.

59
задан Chuck Norris 24 February 2012 в 08:25
поделиться

2 ответа

.first() можно использовать для выбора первого элемента в коллекции jQuery.

По сути, это позволяет избежать необходимости делать новый запрос или разрывать цепочку в ситуациях, когда вам нужно работать с коллекцией, а затем исключительно с первым элементом.

На самом деле, одна из самых затратных операций, которые вы можете сделать в jQuery - это запрос. Чем меньше вы его делаете, тем лучше...

Один пример, который я могу вспомнить прямо сейчас, это скрипт галереи изображений, где ваше первое изображение всегда активно по умолчанию, но вам нужно прикрепить обработчик событий на каждое изображение...

$('#gallery img').click(myFunc).first().addClass('active');

// Instead of
$('#gallery img').click(myFunc);
$('#gallery img:first').addClass('active');

.first() также является синтаксическим сахаром для чего-то, что существует с версии 1.1.2... .eq(0):

$('#gallery img').click(myFunc).eq(0).addClass('active');

на самом деле, именно так это реализовано в самом jQuery:

first: function() {
  return this.eq( 0 );
}
43
ответ дан 24 November 2019 в 18:23
поделиться

$ ('li'). css ('color', 'red'). first (). css ('color', ' зеленый '); применит фильтр после того, как коллекция уже была использована.

В большинстве случаев я бы использовал селектор : first , поскольку его можно комбинировать с и множеством других хороших селекторов , и все это за один проход.

4
ответ дан 24 November 2019 в 18:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: