Что быстрее: $ (". Elt", $ this) или $ this.find (". Elt") ;? - PullRequest
1 голос
/ 28 января 2012
var $this = $(this);

Учитывая вышеизложенное, что быстрее: $(".elt", $this) или $this.find(".elt")?

Я спрашиваю, потому что первое кажется немного более кратким, но если оно преобразуется в $($this).find(".elt") [sic], кажется, что на самом деле оно может быть медленнее.

Ответы [ 2 ]

5 голосов
/ 28 января 2012

Гораздо быстрее использовать $("#elt"), поскольку существует только один элемент с id="elt", который является допустимым элементом. (ID ДОЛЖНЫ БЫТЬ УНИКАЛЬНЫМИ)

Редактировать: Если вы использовали это только в качестве примера, и тот же вопрос относится к использованию класса вместо идентификатора, оба способа должны быть относительно одинаковыми из-за того, как jquery работает внутри.

$(".elt", $this) преобразуется в $this.find(".elt"), что идентично $this.find(".elt").

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

3 голосов
/ 28 января 2012

Разница в производительности между этими двумя незначительна.

$( 'selector', context ) преобразуется в $( context ).find( 'selector' ) в самом начале функции jQuery $().Мы говорим здесь микросекунды (если не наносекунды).

(я предпочитаю более короткую форму, потому что она ... ну, короче.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...