jQuery nous permet de sélectionner des éléments de façon plus simple qu'en JavaScript.
Exemple : Sélectionner une balise span
// Version Javascript
document.getElementsByTagName('span');
// Version jQuery
$('span');
Exemple : Sélectionner un identifiant #sub-footer
// Version Javascript
document.getElementById('sub-footer');
// Version jQuery
$('#sub-footer');
Exemple : Sélectionner une classe box
// Version Javascript
document.getElementsByClassName('box');
// Version jQuery
$('.box');
Exemple : Sélectionner #nav a:nth-child(odd)
// Version Javascript
// Ne fonctionne pas sous IE8
document.querySelectorAll('#nav a:nth-child(odd)');
// Version jQuery
// Fonctionne sous IE8
$('#nav a:nth-child(odd)');
Article d'Alsacréation sur querySelector
et querySelectorAll
: http://www.alsacreations.com/article/lire/1445-dom-queryselector-queryselectorall-selectors-api.html
Un des grands avantages de jQuery est d'utiliser la syntaxe des sélecteurs CSS et permet d'utiliser les sélecteurs CSS3 avec de vieux navigateurs.
Pour sélectionner les noeuds du DOM (éléments) nous utiliserons la syntaxe $(sélecteur)
.
Bien entendu, la liste ci-dessous n'est pas exhaustive et ne reprend que les sélecteurs les plus utilisés.
Vous pouvez en trouver davantage dans l'API jQuery.
Certains sélecteurs jQuery sont redondants avec les sélecteurs CSS3.
En effet, les sélecteurs jQuery ont été implémentés bien avant la sortie de CSS3. Je vous conseille donc de préviligier les sélecteurs CSS3 dont l'utilisation est plus pérenne.
Sélecteurs | Exemple | Éléments selectionnés |
---|---|---|
.class, .class | $('.box, .pod') |
Les éléments class="box" ou class="pod" |
#id .class | $('#content .box') |
Les éléments class="box" à l'intérieur id="content" |
#id.class | $('#content.wrap') |
Les éléments class="wrap" ayant pour identifiant id="content" |
Le sélecteur de contexte permet d’éviter la redondance de caractères au sein du sélecteur.
Sélecteurs | Exemple | Éléments selectionnés |
---|---|---|
'.class', '#id' | $('.box, h1', '#content') |
Les éléments class="box" et h1 contenu dans id="content" |
Dans l'exemple suivant, nous pouvons être plus concis.
$('#product .box, #product .thumbs').fadeIn(1000);
Utilisons maintenant la même déclaration, mais avec un sélecteur de contexte.
$('.box, .thumbs','#product').fadeIn(1000);
Nous avons ainsi optimisé notre sélecteur.
API : http://api.jquery.com/category/selectors/basic-css-selectors/
Sélecteurs | Exemple | Éléments selectionnés |
---|---|---|
* | $('*') |
Tous les éléments |
Balise html | $('p') |
Tous les paragraphes |
#id | $('#header') |
Les éléments avec id="header" |
.class | $('.box') |
Les éléments avec class="box" |
A > B | $('.box > p' ) |
Les élément B enfants directs de A |
A + B | $('li + li') |
L'élément B frère adjacent de A |
API : http://api.jquery.com/category/selectors/child-filter-selectors/
Sélecteurs | Exemple | Éléments selectionnés |
---|---|---|
:first-child | $('p:first-child') |
1er élément p |
:last-child | $('p:last-child') |
Dernier élément p |
:nth-child(x) | $('li:nth-child(2)') |
2ème élément li |
:nth-child(xn + x) | $('li:nth-child(3n + 2)') |
2ème élément li tous les 3 li |
:only-child | $('.box p:only-child') |
Le fils unique p de class="box" |
API : http://api.jquery.com/category/selectors/content-filter-selector/
Sélecteurs | Exemple | Éléments selectionnés |
---|---|---|
:contains(texte) | $('p:contains("Markdown")') |
Les éléments contenant la chaîne de caractères Markdown. Attention ce sélecteur est sensible à la casse |
:has(sélecteur) | $('.box:has(strong)') |
Les éléments class="box" ayant une balise strong |
:parent | $('.box:parent') |
Les éléments class="box" non vides |
:empty | $('.box:empty') |
Les éléments class="box" vides |
API : http://api.jquery.com/category/selectors/attribute-selectors/
Sélecteurs | Exemple | Éléments selectionnés |
---|---|---|
[attr] | $('[href]') |
Les éléments contenant un attribut href |
[attr=valeur] | $('[href="index.html"]') |
Les éléments contenant un attribut href ayant pour valeur index.html |
[attr!=valeur] | $('[href!="index.html"]') |
Les éléments contenant un attribut href ayant pas pour valeur index.html |
[attr^=valeur] | $('[class^="box-"]') |
Les éléments ayant un classe préfixée de box- comme .box-inner |
[attr$=valeur] | $('[class$="-active"]') |
Les éléments ayant un classe sufixée de -active comme .pod-active |
[attr*=valeur] | $('[class*="box"]') |
Les éléments ayant un classe contenant box comme .pod-boxed |
[attr~=valeur] | $('[class~="box"]') |
Les éléments ayant un classe dont la valeur est une liste séparée par des espaces dont l’un d’eux est exactement box comme class="first box" |
API : http://api.jquery.com/category/selectors/basic-filter-selectors/
Sélecteurs | Exemple | Éléments selectionnés |
---|---|---|
:animated | $('.box:animated') |
Les éléments class=".box" animés en jQuery |
:eq | $('.box:eq(2)') |
Le 3ème élément class=".box" |
:even | $('tr:even') |
Les éléments tr pairs |
:odd | $('tr:odd') |
Les éléments tr impairs |
:first | $('tr:first') |
Le premier élément tr trouvé |
:last | $('tr:last') |
Le dernier élément tr trouvé |
:focus | $('.box:focus') |
Les éléments qui ont le focus |
:gt | $('.box:gt(3)') |
Les éléments class="box à partir du 4ème |
:lt | $('.box:lt(3)') |
Les éléments class="box jusqu'au 3ème |
:header | $('.title:header') |
Toutes les balises de h1 à h6 ayant class="title" |
API : http://api.jquery.com/category/selectors/visibility-filter-selectors/
Sélecteurs | Exemple | Éléments selectionnés |
---|---|---|
:hidden | $('.box:hidden') |
Les éléments class="box" cachés |
:visible | $('.box:visible') |
Les éléments class=".box" ayant une largeur ou une hauteur plus grande que 0. |
API : http://api.jquery.com/category/selectors/form-selectors/
Sélecteurs | Exemple | Éléments selectionnés |
---|---|---|
:input | $(:input) |
Tous les éléments de type input |
:text | $(':text') |
Les éléments input type="text" |
:password | $(':password') |
Les éléments input type="password" |
:radio | $(':radio') |
Les éléments input type="radio" |
:checkbox | $(':checkbox') |
Les éléments input type="checkbox" |
:submit | $(':submit') |
Les éléments input type="submit" |
:reset | $(':reset') |
Les éléments input type="reset" |
:button | $(':button') |
Les éléments button |
:image | $(':image') |
Les éléments input type="image" |
:file | $(':file') |
Les éléments input type="file" |
:enable | $('input:enabled') |
Les éléments input actifs |
:disabled | $('input:disabled') |
Les éléments input désactivés |
:selected | $('select option:selected') |
Les éléments option de select sélectionnés |
:checked | $('input:checked') |
Les éléments input qui sont vérifiés ou sélectionnés |
Vous pouvez aussi sélectionner un élément de formulaire avec un sélecteur CSS :$('input[type="text"]')