поиск jQuery и контекст
Имея следующий html-fragment
Some text
Я думаю, что следующие fragmentы jquery идентичны (будет иметь тот же результат):
$(".something").find("p").css("border", "1px solid red"); $("p", ".something").css("border", "1px solid red");
Мой вопрос в том, лучше ли один fragment, чем другой, и его следует использовать
- Фильтр jquery имеет +
- jQuery .bind () vs. .on ()
- Выбор индекса jQuery
- Есть ли jQuery-подобный CSS / HTML-селектор, который можно использовать в C #?
- Выбор элементов с определенным цветом фона
- Селектор данных jquery
- Найти все элементы на основе ids с помощью regex в селекторе jQuery
- Как работают PrimeFaces Selectors как в update = "@ (. MyClass)"?
Вызовы не идентичны.
По словам Брэндона Аарона, который, очевидно, работал над jQuery, а также в соответствии с живыми тестами здесь метод find всегда быстрее. Смотрите результаты на скриншоте ниже. Прошу прокомментировать, если я что-то упустил.
С 10% или большей разницей в скорости, в зависимости от браузера, определенно стоит использовать find.
Дальнейшее объяснение на сайте Брэндона здесь .
Оба вызова идентичны. Последний вызов переводится в первый. Если вы хотите опустить шаг перевода, используйте первый.
Я могу вспомнить один случай использования, когда использование context
формы может быть предпочтительным – в случае, если контекст содержится в переменной, которая может быть нулевой.
Например:
// Only affect matching items that are descendants of '#parent' do_something( $( '#parent' ) ); // Affect all matching items do_something(); function do_something( $parent_element ){ $( '.child', $parent_element ).each( function(){ } ); }
Во второй раз, когда вызывается do_something()
, если мы использовали $parent_element.find()
он потерпел бы неудачу, тогда как в этом примере, если $parent_element
не определено или пусто, контекст равен null, таким образом: весь документ.
По общему признанию, это краевой случай, но он просто появился в чем-то, над чем я работал, поэтому подумал, что я поместил его здесь для потомков.
Найти лучше, на 40%:
http://jsperf.com/jquery-find-vs-context-2/13
Обратите внимание на разницу:
$myDiv = $("myDiv") myDiv = "#myDiv"
при передаче $myDiv
, элемента jQuery в качестве контекста, он примерно на 10% медленнее, чем $ .find. при передаче в #myDiv
селектор jQuery в качестве контекста, на 40% медленнее, чем $ .find.
$ .find> контекст.