Introduction à jQuery et ses sélecteurs

Sélecteurs jQuery

Le symbole "$" représente un objet jQuery.

Sélection par ID

Pour sélectionner un élément via son identifiant, utilisez la syntaxe $('#identifiant'). Cela encapsule le nœud DOM dans un objet jQuery. Si aucun élément ne correspond, un tableau vide est retourné au lieu de null ou undefined.

// Sélectionne l'élément avec l'id "abc"
var divElement = $('#abc');

Sélection par classe

Pour récupérer tous les éléments possédant une classe spécifique :

var elementsRouges = $('.red'); 
// Récupère tous les éléments ayant la classe "red"

Sélection par balise (tag)

var paragraphes = $('p'); // Tous les éléments <p>
console.log(paragraphes.length); // Nombre total de paragraphes

Sélection par attribut

var champEmail = $('[name=email]');
var champsPassword = $('[type=password]');
var itemSpecial = $('[items="A B"]'); // Attributs contenant des espaces

Sélection avec préfixe/suffixe d'attribut

var icones = $('[name^=icon]'); // Noms commençant par "icon"
var terminaisons = $('[name$=with]'); // Noms se terminant par "with"

Sélecteurs combinés

var inputEmail = $('input[name=email]'); // Uniquement les inputs avec name="email"

Sélecteurs multiples

$('p, div'); // Sélectionne à la fois les <p> et les <div>
$('p.red, p.green'); // Sélectionne les paragraphes avec les classes red ou green

Notez que les résultats sont ordonnés selon leur position dans le document HTML et sans doublons.

Sélecteurs hiérarchiqeus

$('form[name=upload] input'); // Inputs enfants directs ou indirects du formulaire
$('form.test p input');       // Inputs situés sous un <p> dans un formulaire

Sélecteur enfant direct

<!-- Structure HTML -->
<div class="testing">
    <ul class="lang">
        <li class="lang-javascript">JavaScript</li>
        <li class="lang-python">Python</li>
        <li class="lang-lua">Lua</li>
    </ul>
</div>

$('ul.lang > li.lang-javascript'); // Élément JavaScript uniquement
$('div.testing > li.lang-javascript'); // Tableau vide - relation non parent-enfant

Filtres

$('ul.lang li');                    // Tous les langages
$('ul.lang li:first-child');        // Premier élément (JavaScript)
$('ul.lang li:last-child');         // Dernier élément (Lua)
$('ul.lang li:nth-child(2)');       // Deuxième élément (Python)
$('ul.lang li:nth-child(even)');    // Éléments pairs
$('ul.lang li:nth-child(odd)');     // Éléments impairs

Méthodes de navigation

<!-- Structure HTML -->
<ul class="lang">
    <li class="js dy">JavaScript</li>
    <li class="dy">Python</li>
    <li id="swift">Swift</li>
    <li class="dy">Scheme</li>
    <li name="haskell">Haskell</li>
</ul>

// Recherche descendante
var listeLangages = $('ul.lang');
var elementsDynamiques = listeLangages.find('.dy');
var elementSwift = listeLangages.find('#swift');
var elementHaskell = listeLangages.find('[name=haskell]');

// Recherche ascendante
var swiftItem = $('#swift');
var parentListe = swiftItem.parent();
var parentFiltre = swiftItem.parent('.red'); // Retourne [] si filtre échoue

// Navigation entre frères
swiftItem.next();                          // Élément suivant (Scheme)
swiftItem.next('[name=haskell]');          // Retourne [] car condition non remplie
swiftItem.prev();                          // Précédent (Python)
swiftItem.prev('.dy');                     // Précédent avec filtre (Python)

Filtrage avancé

// Filtrage avec filter()
var tousLesElements = $('ul.lang li');
var elementsDyn = tousLesElements.filter('.dy');

tousLesElements.filter(function() {
    return this.innerHTML.indexOf('S') === 0; // Commence par S
});

// Transformation avec map()
var valeursTextuelles = tousLesElements.map(function() {
    return this.innerHTML;
}).get(); // ['JavaScript', 'Python', 'Swift', 'Scheme', 'Haskell']

// Extraction partielle
var premier = tousLesElements.first();      // JavaScript
var dernier = tousLesElements.last();       // Haskell
var sousEnsemble = tousLesElements.slice(2, 4); // Swift, Scheme

Résumé des différences entre DOM et jQuery

// Objet jQuery vs élément DOM
$("#monId")[0].value;     // Accès direct à la propriété value
$("#monId").val();        // Méthode jQuery équivalente

// Assignation
$("#monId")[0].value = "nouvelle valeur";
$("#monId").val("nouvelle valeur");

Étiquettes: jQuery JavaScript frontend selectors dom-manipulation

Publié le 15 octobre à 03h05