¿Cómo puedo seleccionar los elementos de enlace solo del padre <ul>
de una lista como esta?
<ul>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a>
<ul>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
</ul>
</li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
Entonces en CSS ul li a
, pero noul li ul li a
Gracias
jquery
html
css
css-selectors
Aston
fuente
fuente
ul.find(">li");
si tiene el nodo "ul" como objeto JQuery en la variable ul.Una vez que tenga el ul inicial, puede usar el método children () , que solo considerará los hijos inmediatos del elemento. Como señala @activa, una forma de seleccionar fácilmente el elemento raíz es darle una clase o una identificación. Lo siguiente asume que tiene una raíz ul con id
root
.fuente
$('ul').first().children('li')
también puede ser utilizadoComo se indica en otras respuestas, el método más simple es identificar de forma única el elemento raíz (por ID o nombre de clase) y usar el selector de descendientes directos.
Sin embargo, me encontré con esta pregunta en busca de una solución que funcione en elementos sin nombre en diferentes profundidades del DOM.
Esto se puede lograr marcando cada elemento y asegurándose de que no tenga un padre en la lista de elementos coincidentes. Aquí está mi solución , envuelta en un selector de jQuery 'superior'.
Utilizando esto, la solución a la publicación original es:
JsFiddle completo disponible aquí .
fuente
:topmost
: intente utilizar.parentElement.closest(selector)
. Como siempre, IE + Edge son los únicos que no lo admiten> :-( así que aquí hay un polyfill pastebin.com/JNBk77VmSimplemente puedes usar esto ...
Ver ejemplo: https://codepen.io/gmkhussain/pen/XzjgRE
fuente
Es posible que desee probar esto si los resultados aún fluyen hacia los niños; en muchos casos, JQuery aún se aplicará a los niños.
Usando este método: E> F Coincide con cualquier elemento F que sea hijo de un elemento E.
Le dice a JQuery que busque solo niños explícitos. http://www.w3.org/TR/CSS2/selector.html
fuente
También puede usar
$("ul li:first-child")
para obtener solo los hijos directos de UL.Sin embargo, estoy de acuerdo, necesita una identificación o algo más para identificar el UL principal, de lo contrario, simplemente los seleccionará todos. Si tuvieras un div con una ID alrededor de UL, lo más fácil sería
$("#someDiv > ul > li")
fuente
:first-child
. Esto seleccionará el "primeroli
de cadaul
". La publicación original pedía "todosli
desde el principioul
".Prueba esto:
fuente
Tuve algunos problemas con las clases anidadas de cualquier profundidad, así que descubrí esto. Seleccionará solo el primer nivel que encuentre de un objeto Jquery contenedor:
fuente
1
probablemente hay muchas otras formas
fuente
el segundo .form-item a nivel de árbol hijo de .add_to_cart
fuente