Tengo una estructura de navegación retorcido que se pueden generalizar como:diferencia en los resultados devueltos entre .Tiene() y: tiene()
<ul id="navigation">
<li>
A
<ul>
<li>
B
<ul>
<li>C</li>
</ul>
</li>
<li>
D
<ul>
<li>
E
<ul>
<li>F</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
Sub-elementos están ocultos hasta vuelo estacionario. Quiero indicar que B, D y E tienen subtemas labrando ellos, así que utilizan el selector:
$('#navigation > li li:has(ul)')
Lo que sólo regresaron B y D. Si lo cambia a:
$('#navigation > li li').has('ul')
devueltos todos los artículos correctos, pero estoy confundido en cuanto a por qué.
EDITAR
:has()
no parece ser afectada (enteramente) anidando como
$('#navigation ul > li:has(ul)')
devuelve los mismos resultados que .has()
anteriormente.
Me parece que los resultados deberían ser los mismos. No sé por qué son diferentes. Tal vez Sizzle deja de buscar elementos anidados cuando se encuentra una coincidencia. Si es así, esto parecería ignorar la posibilidad de elementos idénticos anidados (como lo ha hecho en su ejemplo). – user113716