Я бы сказал, что первый быстрее, так как он анализирует только один селектор CSS и ищет только дочерние элементы, где второй должен анализировать два, плюс должен искать всех потомков.
Но я бы не стал беспокоиться о чем-то таком маленьком. Поскольку JavaScript действительно быстр в WebKit и Gecko, и все еще относительно быстр в IE, никто никогда не заметит разницу.
Из того, что я вижу, глядя на исходный код jQuery / Sizzle , оба фрагмента кода выполняют одно и то же внутри.
Сначала выполняется document.getElementById('FundManager1')
( Sizzle достаточно умен, чтобы понять, что означает #FundManager1
), а затем поиск option
выполняется с использованием этого в качестве контекста. Единственное различие между этими двумя частями кода заключается в использовании селектора >
, в результате чего Sizzle ищет только прямые дочерние элементы контекста, а не всех потомков. Я предполагаю, что это быстрее, поскольку нужно исследовать только один уровень иерархии DOM.
Другое редактирование:
Приведенный выше текст относится только к браузерам, которые не поддерживают метод document.querySelectorAll(css_selector)
! В браузерах, которые это делают (WebKit и Gecko, может быть Opera?), Этот метод используется вместо Sizzle , так что весь синтаксический анализ CSS выполняется селектором, а не фреймворком jQuery, конечно намного быстрее.