una tabla selectores seleccionar que primer por obtener name empiecen elementos elemento con buscar acceder jquery html css css-selectors

tabla - Seleccionar solo elementos de primer nivel en jquery



seleccionar jquery por name (10)

1

$("ul.rootlist > target-element") 2 $("ul.rootlist").find(target-element).eq(0) (only one instance) 3 $("ul.rootlist").children(target-element)

probablemente hay muchas otras formas

¿Cómo puedo seleccionar los elementos de enlace de solo el 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 no en ul li ul li a

Gracias


Como se indica en otras respuestas, el método más simple es identificar de manera única el elemento raíz (por ID o nombre de clase) y usar el selector descendente directo.

$(''ul.topMenu > li > a'')

Sin embargo, me encontré con esta pregunta en busca de una solución que funcione en elementos sin nombre a distintas profundidades del DOM.

Esto se puede lograr verificando cada elemento y asegurándose de que no tenga un padre en la lista de elementos coincidentes. Aquí está mi solution , envuelta en un selector jQuery ''topmost''.

jQuery.extend(jQuery.expr['':''], { topmost: function (e, index, match, array) { for (var i = 0; i < array.length; i++) { if (array[i] !== false && $(e).parents().index(array[i]) >= 0) { return false; } } return true; } });

Utilizando esto, la solución para la publicación original es:

$(''ul:topmost > li > a'') // Or, more simply: $(''li:topmost > a'')

Complete jsFiddle disponible solution .


Prueba esto:

$("#myId > UL > LI")


Puede intentar esto si los resultados aún fluyen hacia los niños, en muchos casos JQuery se aplicará a los niños.

$("ul.rootlist > li > a")

Usando este método: E> F Coincide con cualquier elemento F que sea hijo de un elemento E.

Le dice a JQuery que solo busque hijos explícitos. http://www.w3.org/TR/CSS2/selector.html



También puede usar $("ul li:first-child") para obtener solo los hijos directos de UL.

Aunque estoy de acuerdo, necesita una identificación u otra cosa para identificar la UL principal; de lo contrario, simplemente los seleccionará a todos. Si tuviera un div con una ID alrededor de la UL, lo más fácil sería $("#someDiv > ul > li")


Tuve algunos problemas con clases anidadas desde cualquier profundidad, así que me di cuenta de esto. Seleccionará solo el primer nivel que encuentre de un objeto Jquery que contenga:

var $elementsAll = $("#container").find(".fooClass");4 var $levelOneElements = $elementsAll.not($elementsAll.children().find($elementsAll)); $levelOneElements.css({"color":"red"})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <div class="fooClass" style="color:black"> Container <div id="container"> <div class="fooClass" style="color:black"> Level One <div> <div class="fooClass" style="color:black"> Level Two </div> </div> </div> <div class="fooClass" style="color:black"> Level One <div> <div class="fooClass" style="color:black"> Level Two </div> </div> </div> </div> </div>


Una vez que tenga la ul inicial, puede usar el método children() , que solo considerará los elementos secundarios 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 tienes una raíz ul con root ID.

$(''ul#root'').children(''li'');


$("ul > li a")

Pero necesitaría establecer una clase en la raíz ul si desea específicamente dirigirse a la UL más externa:

<ul class="rootlist"> ...

Entonces es:

$("ul.rootlist > li a")....

Otra forma de asegurarse de que solo tiene los elementos root li:

$("ul > li a").not("ul li ul a")

Parece kludgy, pero debería hacer el truco


.add_to_cart >>> .form-item:eq(1)

el segundo .form-item en el árbol hijo desde el .add_to_cart