поиск jQuery и контекст

Имея следующий html-fragment

Some text

Я думаю, что следующие fragmentы jquery идентичны (будет иметь тот же результат):

 $(".something").find("p").css("border", "1px solid red"); $("p", ".something").css("border", "1px solid red"); 

Мой вопрос в том, лучше ли один fragment, чем другой, и его следует использовать

Вызовы не идентичны.

По словам Брэндона Аарона, который, очевидно, работал над jQuery, а также в соответствии с живыми тестами здесь метод find всегда быстрее. Смотрите результаты на скриншоте ниже. Прошу прокомментировать, если я что-то упустил.

С 10% или большей разницей в скорости, в зависимости от браузера, определенно стоит использовать find.

Дальнейшее объяснение на сайте Брэндона здесь .

Результаты сравнения производительности между контекстом jQuery и методом поиска jQuery

Оба вызова идентичны. Последний вызов переводится в первый. Если вы хотите опустить шаг перевода, используйте первый.

Я могу вспомнить один случай использования, когда использование 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> контекст.

  • jQuery как найти элемент на основе значения атрибута данных?
  • jQuery выбирает атрибут с использованием операторов AND и OR
  • jQuery scrollTop не работает в Chrome, но работает в Firefox
  • использовать jQuery's find () для объекта JSON
  • Как получить доступ к свойствам стиля псевдоэлементов с помощью jQuery?
  • jQuery mobile - для каждого события прямого трансляционного события должно существовать эквивалентное событие click?
  • jQuery выбрать по classу VS выбрать по атрибуту
  • jQuery: исключить $ (this) из селектора
  • Как я могу определить, возвращает ли селектор null?
  • Эффективный, лаконичный способ найти следующий соответствующий друг?
  • : nth-of-type () в jQuery / Sizzle?
  • Interesting Posts

    Как понять решение динамического программирования в линейном разбиении?

    Ошибка получения родительского элемента: не найден ресурс, который соответствует указанному имени ‘@android: style / TextAppearance.Holo.Widget.ActionBar.Title’

    «Удаленное» редактирование реестра – Windows 7

    Eclipse RCP: Действия VS-команды

    Смешивание дисков SATA и SAS на одном контроллере

    Почему Windows имеет ограничение на переменные среды?

    Невозможно вставить ячейки в Excel 2010 – сообщение об ошибке «операция не разрешена»

    Java: Как я могу скомпилировать всю структуру каталогов кода?

    Получение ответа асинхронного запроса HttpWebRequest

    Excel: идентификация, если все значения в строке не равны

    Исключение точки останова в Xcode

    Excel – как иметь прямой ввод данных или значение ячейки из формулы

    Анализ ответа ksoap2

    Использование JQuery Validate Plugin для проверки нескольких полей формы с одинаковыми именами

    Разделить значение int на отдельные цифры

    Давайте будем гением компьютера.