Sélection uniquement des éléments de premier niveau, et non des éléments enfants portant le même nom d’élément

Comment choisirais-je seulement le premier niveau .block et non aucun des enfants?

$('.block:not("Children of this here")') <-

 

Si cet exemple de balise a un élément parent, par exemple ci-dessous. Sinon, le parent sera body s’il s’agit d’un code HTML valide.

HTML

 

jQuery

 $('#parent > .block').css({ border: '1px solid red' }); 

Vous pouvez utiliser le sélecteur :first pour sélectionner uniquement le premier élément .block correspondant:

 $('.block:first') 

Cela fonctionne car jQuery correspond aux éléments dans l’ordre des documents. L’élément .block plus .block sera le premier élément associé par .block , et :first filtrera pour le renvoyer uniquement.

Notez que :first n’est pas la même chose que :first-child .

EDIT : En réponse à votre mise à jour, vous pouvez écrire ce qui suit, qui ne fonctionnera que si tous les éléments sont nesteds trois profonds:

 $('.block:note(:has(.block .block))') 

Vous pouvez écrire une solution plus robuste en utilisant un appel de fonction:

 $('.block').not(function() { return $(this).closest('.block').length; }) 

Cela trouvera tous les éléments .block , puis supprimera tous les éléments correspondants ayant un ancêtre correspondant à .block . (Vous pouvez remplacer le closest par parent si vous le souhaitez).

 $('#parent').children('.block'); 

Voir .children () Référence jQuery.

Essaye ça:

 $("div.block:first"). 

edit: supprime les espaces. merci: -) …. maintenant ça devrait être bon.

HTH