Подтвердить что ты не робот

Имеет ли смысл jQuery cache $(this)?

Я все еще узнаю о jQuery, но я не смог найти надежный ответ. Я знаю, что каждый раз, когда вы используете селектор jQuery $(...), есть стоимость исполнения, но имеет ли $(this) значительную стоимость, где вы должны кэшировать его, прежде чем использовать его много?

var $this = $(this);
4b9b3361

Ответ 1

Если вы используете его много, да, это имеет смысл или цепочка, например:

$(this).fadeIn().fadeOut().somethingElse();

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

Ответ 2

Хороший вопрос, Джейсон. Я полагаю, что функция селектора jQuery замечает ключевое слово this достаточно эффективно. Тем не менее, имеет смысл не повторять вызовы одного и того же селектора, если вы можете его избежать. В этом случае полезно использовать цепочку методов:
$(this).hide().show().hide();

Если вы собираетесь использовать один и тот же селектор в разных точках одной и той же функции, я бы, вероятно, сделал переменную для хранения возвращаемого значения функции селектора jQuery. Если этого не произойдет, я бы не стал беспокоиться об этом, потому что это действительно очень и очень небольшой объем обработки, который выполняется... тем более, что я уверен, что библиотека jQuery проверяет это ключевое слово (и тип строки) до он запускает любые регулярные выражения.