Полагаю, это потому, что когда вы делаете:
$('[ui\\:component]')
... Sizzle передает селектор методу браузера document.querySelectorAll()
(при его наличии), эффективно обходя Sizzle.
Принимая во внимание, что когда вы делаете .find()
или .filter()
, Sizzle используется.
Так что я бы предположил, что что-то в селекторе не поддерживается Sizzle, но querySelectorAll()
.Возможно, :
.
Я думаю, вы обнаружите, что это:
document.querySelectorAll('[ui\\:component]').length
и это:
$('[ui\\:component]').length
... даст вам аналогичные результаты
РЕДАКТИРОВАТЬ:
Если это помогает, кажется, дефис работает нормально.
$('body').find('[ui-component]').length
HTML
<ul ui-component="component2"></ul>