Préparation d'entretien 100% Gratuit angularforall.com

jQuery Débutant — DOM & Sélecteurs

Jquery Debutant Quiz-Jquery-Debutant Selecteurs-Css Manipulation-Dom Evenements-Jquery Questions-Entretien-Jquery Qcm-Jquery Apprendre-Jquery Effets-Animations Javascript Front-End Legacy-Frontend Jquery-Fondamentaux
Débutant 🔀 Mixte 20 questions ⏱ 15 min
📝

jQuery Débutant — DOM & Sélecteurs

20 questions sur les bases de jQuery : sélecteurs CSS, manipulation du DOM, gestion des événements, traversal, attributs et effets visuels. Idéal pour valider les fondamentaux jQuery avant un entretien.

20 questions ⏱ ~15 min Niveau Débutant

Partager

Banque de révision : les 60 questions corrigées

Voici l'intégralité des 60 questions de « jQuery Débutant — DOM & Sélecteurs », chacune avec sa bonne réponse et son explication. Le quiz interactif ci-dessus en tire une sélection aléatoire à chaque tentative — utilisez cette liste complète pour réviser.

  • .monId
  • #monId (bonne réponse)
  • *monId
  • [monId]
Explication : En jQuery, le sélecteur #monId cible un élément dont l'attribut id vaut monId. Le préfixe # est hérité de la syntaxe CSS et est le sélecteur le plus performant car l'id est unique dans le DOM.

  • $("actif")
  • $("#actif")
  • $(".actif") (bonne réponse)
  • $("[actif]")
Explication : Le sélecteur de classe en jQuery utilise le préfixe . : $(".actif") retourne tous les éléments ayant class="actif". Un élément peut avoir plusieurs classes, donc ce sélecteur peut retourner plusieurs éléments.
En entretien, mentionnez que les sélecteurs de classe sont moins performants que les sélecteurs d'id car jQuery doit parcourir le DOM entier.

  • Le premier paragraphe uniquement
  • Un objet jQuery contenant tous les éléments <p> (bonne réponse)
  • Le dernier paragraphe uniquement
  • Une erreur si plusieurs <p> existent
Explication : Le sélecteur d'élément $("p") retourne un objet jQuery (une collection) contenant tous les éléments <p> présents dans le document. jQuery applique ensuite les méthodes chaînées à chaque élément de cette collection.

  • $("all")
  • $("+")
  • $("*") (bonne réponse)
  • $(".")
Explication : Le sélecteur universel $("*") cible absolument tous les éléments du DOM. Son utilisation est déconseillée pour des raisons de performance car jQuery doit parcourir l'intégralité de l'arbre DOM.

  • $("data-type")
  • $("[data-type]") (bonne réponse)
  • $(".data-type")
  • $("#data-type")
Explication : Le sélecteur d'attribut $('[data-type]') cible tous les éléments possédant cet attribut, quelle que soit sa valeur. Pour cibler une valeur précise, on utilise $('[data-type="valeur"]').
Ce sélecteur est très utile avec les attributs data-* HTML5. En entretien, montrez que vous connaissez aussi $("[attr=val]"), $("[attr^=val]") et $("[attr$=val]").

  • Sélectionne le premier &lt;li&gt; de chaque liste
  • Sélectionne le premier &lt;li&gt; trouvé dans tout le document (bonne réponse)
  • Génère une erreur de syntaxe
  • Sélectionne les &lt;li&gt; ayant la classe first
Explication : Le pseudo-sélecteur :first ne retourne que le premier élément de l'ensemble correspondant dans tout le document. Attention à ne pas le confondre avec :first-child (CSS) qui agit sur chaque parent.

  • $("li:index(2)")
  • $("li:eq(2)") (bonne réponse)
  • $("li:nth(2)")
  • $("li:pos(2)")
Explication : Le pseudo-sélecteur :eq(n) cible l'élément à l'index n (base 0). Ainsi $('li:eq(2)') cible le 3e <li>. C'est l'équivalent de la méthode .eq(2) dans une chaîne jQuery.

  • Sélectionne les &lt;p&gt; dont l'attribut id vaut "Bonjour"
  • Sélectionne les &lt;p&gt; dont le texte contient "Bonjour" (bonne réponse)
  • Sélectionne les &lt;p&gt; ayant la classe "Bonjour"
  • Génère une erreur
Explication : Le sélecteur :contains(texte) filtre les éléments dont le contenu textuel (y compris les descendants) contient la chaîne spécifiée. La recherche est sensible à la casse.
Mentionnez en entretien que :contains() est sensible à la casse et qu'il n'est pas un sélecteur CSS standard — c'est une extension jQuery.

  • $("*:shown")
  • $("*:visible") (bonne réponse)
  • $("*:display")
  • $("*:opacity(1)")
Explication : Le pseudo-sélecteur :visible cible les éléments qui prennent de la place dans la page (non masqués). Un élément est considéré visible s'il a display différent de none, visibility différent de hidden et opacity supérieur à 0.

  • Tous les champs &lt;input&gt; du formulaire
  • Les &lt;input&gt; de type checkbox ou radio qui sont cochés (bonne réponse)
  • Les &lt;input&gt; ayant la classe checked
  • Les &lt;input&gt; désactivés
Explication : Le pseudo-sélecteur :checked cible les éléments <input type="checkbox"> et <input type="radio"> dont l'état est coché. Il ne s'applique pas aux champs texte ou aux boutons.

  • Aucune différence, les deux sont équivalents
  • :disabled est un sélecteur jQuery, [disabled] est CSS pur — ils ciblent les mêmes éléments mais :disabled est plus large (bonne réponse)
  • Seul :disabled fonctionne en jQuery
  • Seul [disabled] est valide en jQuery
Explication : Les deux sélecteurs ciblent des éléments désactivés, mais :disabled est un pseudo-sélecteur jQuery qui s'applique à tous les éléments de formulaire (input, select, button...), tandis que [disabled] cible l'attribut HTML brut.
En entretien, précisez que :disabled est plus sémantique et recommandé. Évitez le sélecteur *:disabled pour des raisons de performance.

  • $("h1" + "p" + "span")
  • $("h1 p span")
  • $("h1, p, span") (bonne réponse)
  • $("h1 & p & span")
Explication : La virgule est l'opérateur de sélection multiple en jQuery (et en CSS). $("h1, p, span") retourne un objet jQuery contenant tous les <h1>, <p> et <span> du document.

  • La valeur de l'attribut value de l'élément
  • Le contenu HTML interne de l'élément (innerHTML) (bonne réponse)
  • Le texte brut sans balises HTML
  • L'élément DOM natif
Explication : La méthode .html() sans argument est un getter qui retourne le contenu HTML interne (innerHTML) du premier élément de la sélection. Elle préserve les balises HTML contrairement à .text().

  • Aucune différence
  • .html() interprète le HTML, .text() échappe les caractères et affiche le texte brut (bonne réponse)
  • .text() est plus rapide mais les deux ont le même résultat visuel
  • .html() ne fonctionne que sur les div
Explication : Avec .html("<b>test</b>"), le mot "test" apparaît en gras. Avec .text("<b>test</b>"), la chaîne est échappée et affichée littéralement : <b>test</b>. Utilisez .text() pour éviter les injections XSS.
En entretien, soulignez que .text() est plus sûr pour afficher du contenu utilisateur car il prévient les attaques XSS.

  • $("input").html()
  • $("input").text()
  • $("input").val() (bonne réponse)
  • $("input").content()
Explication : La méthode .val() est spécialement conçue pour lire (getter) et définir (setter) la valeur des éléments de formulaire : <input>, <select>, <textarea>. Les méthodes .html() et .text() ne fonctionnent pas pour les champs de formulaire.

  • $("a").href()
  • $("a").prop("href")
  • $("a").attr("href") (bonne réponse)
  • $("a").get("href")
Explication : La méthode .attr("href") lit la valeur de l'attribut HTML href tel qu'il est écrit dans le code source. Pour obtenir l'URL absolue résolue par le navigateur, on utilise .prop("href").

  • Aucune, ils sont synonymes
  • .attr() retourne la valeur HTML statique, .prop() retourne l'état actuel dynamique du DOM (bonne réponse)
  • .prop() ne fonctionne que sur jQuery 1.x
  • .attr() retourne un booléen, .prop() une chaîne
Explication : .attr('checked') retourne 'checked' ou undefined selon l'HTML initial. .prop('checked') retourne true ou false selon l'état actuel de la case — c'est ce qu'il faut utiliser pour les checkboxes.
Utilisez toujours .prop() pour les propriétés booléennes (checked, disabled, selected) et .attr() pour les attributs HTML personnalisés.

  • $("el").attr("data-user-id") uniquement
  • $("el").data("userId") ou $("el").attr("data-user-id") (bonne réponse)
  • $("el").dataset("user-id")
  • $("el").get("data-user-id")
Explication : jQuery offre deux façons : .attr('data-user-id') lit l'attribut HTML directement, et .data('userId') utilise le cache interne jQuery avec conversion camelCase automatique. .data() est préférable car il convertit aussi les types (nombres, booléens, objets JSON).

  • $("div").style("background", "red")
  • $("div").css("background-color", "red") (bonne réponse)
  • $("div").setStyle("background-color: red")
  • $("div").color("red")
Explication : La méthode .css(propriété, valeur) modifie le style CSS inline d'un élément. On peut aussi passer un objet : .css({"background-color": "red", "color": "white"}) pour modifier plusieurs propriétés en une fois.

  • Remplace toutes les classes existantes par actif
  • Ajoute la classe actif à tous les &lt;p&gt; sans supprimer les classes existantes (bonne réponse)
  • Ajoute la classe uniquement si l'élément n'a pas encore de classe
  • Génère une erreur si l'élément a déjà des classes
Explication : La méthode .addClass() ajoute une ou plusieurs classes CSS à l'élément sans toucher aux classes déjà présentes. Pour remplacer toutes les classes, il faudrait utiliser .attr('class', 'actif').

  • $("el").deleteClass("masqué")
  • $("el").removeClass("masqué") (bonne réponse)
  • $("el").removeAttr("class", "masqué")
  • $("el").addClass("-masqué")
Explication : La méthode .removeClass('masqué') supprime uniquement la classe spécifiée. Appelée sans argument, .removeClass() supprime toutes les classes de l'élément.
En entretien, mentionnez .toggleClass() comme alternative quand on veut alterner l'ajout et la suppression d'une classe selon son état actuel.

  • Ajoute toujours la classe actif
  • Supprime toujours la classe actif
  • Ajoute la classe si absente, la supprime si présente (bonne réponse)
  • Inverse la visibilité de l'élément
Explication : La méthode .toggleClass() bascule une classe : si la classe est absente elle l'ajoute, si elle est présente elle la supprime. C'est très pratique pour créer des effets d'activation/désactivation sans gérer l'état manuellement.

  • L'élément DOM si la classe existe
  • true si l'élément possède la classe, false sinon (bonne réponse)
  • Le nombre d'éléments ayant cette classe
  • La liste de toutes les classes de l'élément
Explication : La méthode .hasClass() retourne un booléen : true si au moins un élément de la sélection possède la classe spécifiée, false sinon. Utile dans les conditions : if ($('#box').hasClass('open')) { ... }.

  • Sélectionne le premier &lt;span&gt; enfant direct uniquement
  • Sélectionne tous les &lt;span&gt; descendants de #container, à n'importe quelle profondeur (bonne réponse)
  • Sélectionne les &lt;span&gt; qui contiennent #container
  • Retourne null si aucun &lt;span&gt; n'est trouvé
Explication : La méthode .find(selecteur) recherche tous les descendants (enfants, petits-enfants, etc.) de l'élément courant correspondant au sélecteur. C'est l'équivalent de $("#container span") mais souvent plus performant dans les DOM complexes.

  • Aucune différence
  • .children() ne retourne que les enfants directs, .find() retourne tous les descendants (bonne réponse)
  • .find() ne retourne que les enfants directs, .children() va en profondeur
  • .children() nécessite un sélecteur obligatoire
Explication : .children() parcourt uniquement un niveau de profondeur (enfants directs), tandis que .find() parcourt toute la sous-arborescence. Les deux acceptent un sélecteur optionnel pour filtrer les résultats.
En entretien, expliquez que .children() est plus performant quand vous savez que les éléments sont au premier niveau.

  • Tous les ancêtres de chaque &lt;span&gt;
  • L'élément parent direct de chaque &lt;span&gt; (bonne réponse)
  • Le nœud racine du document
  • Le frère précédent de chaque &lt;span&gt;
Explication : La méthode .parent() remonte d'un seul niveau dans l'arborescence DOM pour retourner l'élément parent direct. Elle accepte un sélecteur optionnel : .parent('.conteneur') retourne le parent uniquement s'il correspond.

  • .parent(".maSel")
  • .parents(".maSel") (bonne réponse)
  • .ancestors(".maSel")
  • .up(".maSel")
Explication : La méthode .parents(sélecteur) (avec un s) remonte dans toute la chaîne des ancêtres jusqu'à la racine du document et retourne ceux qui correspondent au sélecteur. Sans argument, elle retourne tous les ancêtres.

  • Elles sont identiques
  • .closest() part de l'élément lui-même et s'arrête au premier ancêtre correspondant; .parents() retourne tous les ancêtres correspondants (bonne réponse)
  • .parents() retourne un seul élément, .closest() retourne tous
  • .closest() ne fonctionne que sur les éléments racine
Explication : .closest(sel) commence par l'élément courant lui-même et remonte jusqu'au premier ancêtre correspondant (1 résultat max). .parents(sel) ignore l'élément courant et retourne tous les ancêtres correspondants (n résultats possibles).
En pratique, utilisez .closest() pour la délégation d'événements (ex: trouver le formulaire parent d'un input cliqué).

  • Retourne les enfants de chaque &lt;li&gt;
  • Retourne tous les éléments frères (au même niveau) de chaque &lt;li&gt;, sauf lui-même (bonne réponse)
  • Retourne le parent de chaque &lt;li&gt;
  • Retourne le frère suivant uniquement
Explication : La méthode .siblings() retourne tous les éléments frères — ceux qui partagent le même parent — en excluant l'élément courant. On peut passer un sélecteur pour filtrer : .siblings('.actif').

  • Le frère suivant de chaque &lt;p&gt; dans le DOM (bonne réponse)
  • Tous les descendants du &lt;p&gt;
  • Le premier enfant de chaque &lt;p&gt;
  • Le &lt;p&gt; suivant uniquement (pas les autres éléments)
Explication : La méthode .next() retourne l'élément frère immédiatement suivant dans le DOM pour chaque élément de la sélection. Si le <p> est suivi d'un <div>, c'est ce <div> qui est retourné.

  • $("li").first() ou $("li").eq(0) (bonne réponse)
  • $("li").start()
  • $("li").index(0)
  • $("li[0]")
Explication : Deux approches équivalentes : .first() est un raccourci sémantique pour .eq(0), les deux retournent un objet jQuery contenant uniquement le premier élément de la sélection.

  • .find(critere)
  • .filter(critere) (bonne réponse)
  • .select(critere)
  • .where(critere)
Explication : La méthode .filter(sélecteur) réduit une sélection existante aux éléments correspondant au sélecteur (ou à une fonction callback). Contrairement à .find(), elle opère sur les éléments de la sélection courante, pas sur leurs descendants.
Exemple pratique : $(\"li\").filter(function() { return $(this).text().length > 10; }).filter() accepte aussi une fonction pour des critères complexes.

  • Sélectionne les &lt;p&gt; ayant la classe exclure
  • Sélectionne tous les &lt;p&gt; n'ayant pas la classe exclure (bonne réponse)
  • Supprime la classe exclure de tous les &lt;p&gt;
  • Génère une erreur si aucun &lt;p&gt; n'a la classe exclure
Explication : La méthode .not(sélecteur) exclut de la sélection les éléments correspondant au critère. C'est l'inverse de .filter(). On peut aussi utiliser la pseudo-classe :not() directement dans le sélecteur : $("p:not(.exclure)").

  • $("div").prepend("&lt;p&gt;texte&lt;/p&gt;")
  • $("div").before("&lt;p&gt;texte&lt;/p&gt;")
  • $("div").append("&lt;p&gt;texte&lt;/p&gt;") (bonne réponse)
  • $("div").after("&lt;p&gt;texte&lt;/p&gt;")
Explication : La méthode .append() insère du contenu à l'intérieur de l'élément cible, après tout son contenu existant. Moyen mnémotechnique : "append" = "ajouter à la fin".

  • .prepend()
  • .appendTo()
  • .before() (bonne réponse)
  • .insertAt()
Explication : La méthode .before() insère le contenu en dehors de l'élément, juste avant lui dans le DOM (comme un frère précédent). À ne pas confondre avec .prepend() qui insère à l'intérieur de l'élément, au début de son contenu.

  • $("el").delete()
  • $("el").remove() (bonne réponse)
  • $("el").destroy()
  • $("el").hide()
Explication : La méthode .remove() supprime l'élément et tous ses enfants du DOM, ainsi que tous les gestionnaires d'événements jQuery et les données associées. À distinguer de .empty() qui vide l'élément de son contenu sans le supprimer lui-même.
En entretien, mentionnez .detach() comme alternative qui préserve les données et événements jQuery pour réinsérer l'élément plus tard.

  • Supprime l'élément &lt;ul&gt; du DOM
  • Supprime tous les enfants de &lt;ul&gt; mais conserve l'élément lui-même (bonne réponse)
  • Masque l'élément &lt;ul&gt;
  • Vide l'attribut class de &lt;ul&gt;
Explication : La méthode .empty() supprime tout le contenu interne de l'élément (enfants, texte, etc.) mais l'élément lui-même reste dans le DOM. C'est équivalent à définir innerHTML = '' en JavaScript natif.

  • $("el").copy(true)
  • $("el").clone(true) (bonne réponse)
  • $("el").duplicate()
  • $("el").replicate(true)
Explication : La méthode .clone() crée une copie profonde de l'élément. Avec .clone(true), les gestionnaires d'événements jQuery sont également copiés. Sans argument ou avec false, seule la structure HTML est dupliquée.

  • Change l'opacité à 1
  • Définit display à la valeur appropriée (block, inline…) pour rendre l'élément visible (bonne réponse)
  • Ajoute la classe visible
  • Définit visibility: visible
Explication : La méthode .show() modifie la propriété CSS display pour rendre l'élément visible, en restaurant sa valeur d'origine (block, inline, flex...). Elle accepte une durée : .show(400) pour une animation.

  • $("el").fadeOut() (bonne réponse)
  • $("el").blur()
  • $("el").animateOut()
  • $("el").opacityOut()
Explication : La méthode .fadeOut() anime l'opacité de 1 à 0 puis définit display: none. Elle accepte une durée en millisecondes ou les mots-clés 'slow'/'fast', et un callback exécuté à la fin de l'animation.
Mentionnez .stop(true, true) avant une animation pour éviter les effets de queue si l'utilisateur déclenche l'animation plusieurs fois rapidement.

  • Fait glisser le div horizontalement
  • Alterne entre afficher (slideDown) et masquer (slideUp) le div avec une animation verticale de 300ms (bonne réponse)
  • Applique une transformation CSS translate
  • Déplace le div à la position Y=300
Explication : La méthode .slideToggle() bascule la visibilité d'un élément avec une animation de glissement vertical. Si visible → slideUp (masque), si masqué → slideDown (affiche). L'argument 300 est la durée en millisecondes.

  • $("box").css("width", "200px") (instantané)
  • $("box").animate({width: "200px"}, 500) (bonne réponse)
  • $("box").transition("width: 200px")
  • $("box").width(200, 500)
Explication : La méthode .animate(propriétés, durée) permet d'animer des propriétés CSS numériques. Le premier argument est un objet CSS, le second la durée en ms. jQuery interpole les valeurs entre l'état actuel et la cible.

  • Arrête le serveur jQuery
  • Arrête toutes les animations en cours et vide la file d'attente, puis saute à la fin de l'animation courante (bonne réponse)
  • Suspend l'animation pendant 1 seconde
  • Annule uniquement la prochaine animation planifiée
Explication : La méthode .stop(clearQueue, jumpToEnd) arrête les animations. Avec true, true : le premier true vide toute la file d'attente d'animations, le second true saute immédiatement à l'état final de l'animation en cours.
Pattern courant : appeler .stop(true, true) avant chaque animation déclenchée par l'utilisateur pour éviter les animations en cascade (\"queue buildup\").

  • $("button").addEventListener("click", fn)
  • $("button").click(function() { ... }) (bonne réponse)
  • $("button").on("mousedown", function() { ... })
  • $("button").event("click", function() { ... })
Explication : La méthode .click(handler) est un raccourci pour .on('click', handler). Les deux sont valides en jQuery. .on() est la méthode recommandée car elle permet la délégation d'événements et de gérer plusieurs événements à la fois.

  • Les deux sont équivalents
  • La délégation via $(document).on() fonctionne aussi pour les éléments ajoutés dynamiquement après le chargement (bonne réponse)
  • $(document).on() est plus performant dans tous les cas
  • .click() est déprécié en jQuery 3
Explication : La délégation d'événements attache le listener sur un ancêtre (ici document) et vérifie si la cible correspond au sélecteur. Ainsi, les éléments créés dynamiquement après le chargement déclenchent bien l'événement, contrairement à .click() qui n'agit que sur les éléments existants au moment de l'appel.
En pratique, utilisez un ancêtre proche plutôt que document pour de meilleures performances : $(\"#container\").on(\"click\", \".item\", fn).

  • $("el").removeEvent("click")
  • $("el").unbind("click")
  • $("el").off("click") (bonne réponse)
  • $("el").detach("click")
Explication : La méthode .off() est le pendant de .on() pour supprimer les gestionnaires d'événements. .off('click') supprime tous les handlers de clic, et .off('click', maFonction) supprime uniquement un handler spécifique.

  • Arrête la propagation de l'événement vers les parents
  • Empêche le comportement par défaut du navigateur (ex: navigation d'un lien, soumission d'un formulaire) (bonne réponse)
  • Supprime le gestionnaire d'événement
  • Empêche l'événement de se déclencher une deuxième fois
Explication : La méthode event.preventDefault() annule l'action par défaut associée à l'événement : empêche un lien de naviguer, un formulaire de se soumettre, etc. Elle ne bloque pas la propagation de l'événement aux éléments parents.

  • Aucune, ils font la même chose
  • preventDefault() bloque l'action par défaut, stopPropagation() bloque la remontée de l'événement dans le DOM (bonne réponse)
  • stopPropagation() bloque l'action par défaut, preventDefault() la propagation
  • Seul stopPropagation() est disponible dans jQuery
Explication : preventDefault() empêche le comportement navigateur (ex: soumettre le form). stopPropagation() empêche l'événement de remonter dans le DOM (bubbling). return false dans jQuery fait les deux à la fois.
Évitez return false par défaut car il combine les deux effets, ce qui peut causer des bugs subtils. Soyez explicite avec preventDefault() ou stopPropagation() selon votre besoin.

  • L'objet window
  • L'élément jQuery sur lequel l'événement a été déclenché (bonne réponse)
  • L'événement lui-même
  • Le premier élément de la sélection jQuery globale
Explication : Dans un callback jQuery, this est l'élément DOM natif sur lequel l'événement a été déclenché. $(this) l'enveloppe dans un objet jQuery pour utiliser toutes les méthodes jQuery. C'est un pattern fondamental en jQuery.

  • Retourne le nombre de &lt;li&gt;
  • Exécute la fonction pour chaque &lt;li&gt; en passant son index et l'élément DOM (bonne réponse)
  • Filtre les &lt;li&gt; correspondant à une condition
  • Crée un nouvel objet jQuery pour chaque &lt;li&gt;
Explication : La méthode .each(callback) itère sur chaque élément de la sélection. La fonction reçoit l'index (0-based) et l'élément DOM natif. À l'intérieur, this est aussi l'élément DOM et $(this) sa version jQuery.

  • $("p").count()
  • $("p").size()
  • $("p").length (bonne réponse)
  • $("p").total()
Explication : La propriété .length (sans parenthèses car c'est une propriété, pas une méthode) retourne le nombre d'éléments dans l'objet jQuery. La méthode .size() existait mais a été supprimée en jQuery 3.x.
La propriété .length sert aussi de test de présence : if ($(\"#monId\").length) { /* existe */ }.

  • L'objet jQuery filtré avec les éléments visibles
  • true si au moins un &lt;li&gt; est visible, false sinon (bonne réponse)
  • Le nombre de &lt;li&gt; visibles
  • Chaque &lt;li&gt; visible dans un tableau
Explication : La méthode .is(sélecteur) retourne un booléen : true si au moins un élément de la sélection correspond au critère. C'est différent de .filter() qui retourne un objet jQuery. Utile dans les conditions.

  • $("li").position()
  • $("li").indexOf()
  • $("li").index() (bonne réponse)
  • $("li").rank()
Explication : La méthode .index() retourne la position (base 0) d'un élément parmi ses frères ou dans une sélection. Ex: $("#item").index() retourne sa position parmi les frères. Avec un sélecteur : $("li").index($("#item")).

  • $("el").native()
  • $("el").dom()
  • $("el").get(0) (bonne réponse)
  • $("el").element(0)
Explication : La méthode .get(index) retourne l'élément DOM natif (non enveloppé par jQuery) à l'index spécifié. $('el')[0] est un raccourci équivalent. C'est utile pour passer à des APIs qui attendent des éléments DOM natifs.
En entretien, montrez que vous savez passer de l'API jQuery à l'API DOM native : $(\"el\").get(0)$(nativeDomEl) pour l'inverse.

  • La position relative à l'élément parent
  • Un objet {top: x, left: y} avec la position absolue par rapport au document (bonne réponse)
  • La marge de l'élément
  • L'index de l'élément dans le DOM
Explication : La méthode .offset() retourne la position absolue de l'élément relativement au document (pas au parent). Elle retourne un objet {top: number, left: number}. À distinguer de .position() qui est relative au parent positionné.

  • $("el").outerWidth()
  • $("el").innerWidth()
  • $("el").width() (bonne réponse)
  • $("el").contentWidth()
Explication : La méthode .width() retourne la largeur du contenu uniquement (sans padding, border ni margin). .innerWidth() inclut le padding, et .outerWidth() inclut padding et border (avec true, inclut aussi la margin).

  • $("form").toString()
  • $("form").serialize() (bonne réponse)
  • $("form").encode()
  • $("form").data()
Explication : La méthode .serialize() encode les données d'un formulaire en chaîne URL-encodée (ex: nom=Jean&age=30). Elle n'inclut que les éléments qui seraient soumis normalement (champs avec name, non désactivés). Pour obtenir un tableau d'objets, utilisez .serializeArray().

  • Désactive toutes les animations jQuery
  • Libère le symbole $ pour éviter les conflits avec d'autres bibliothèques utilisant $ (bonne réponse)
  • Désactive le mode strict de jQuery
  • Empêche les erreurs en cas d'éléments inexistants
Explication : La méthode $.noConflict() rend le contrôle du symbole $ à l'autre bibliothèque (Prototype, MooTools...). On utilise ensuite jQuery à la place de $, ou on crée un alias : var jq = $.noConflict();.
En entretien, montrez l'alternative avec une IIFE : (function($) { /* code utilisant $ ici */ })(jQuery); — c'est la méthode recommandée.

  • window.onload = function() { ... }
  • $(window).load(function() { ... })
  • $(function() { ... }) ou $(document).ready(function() { ... }) (bonne réponse)
  • document.addEventListener("DOMLoaded", function() { ... })
Explication : Les deux syntaxes sont équivalentes et attendent que le DOM soit entièrement analysé (sans attendre les images). $(function() {}) est le raccourci moderne préféré. Contrairement à window.onload, ce code s'exécute dès que le DOM est parsé, avant le chargement des ressources.

  • Écoute les événements mousedown et mouseup
  • Attache des handlers pour mouseenter (souris entre) et mouseleave (souris sort) (bonne réponse)
  • Écoute l'événement mouseover uniquement
  • Applique une animation de survol CSS
Explication : La méthode .hover(fnIn, fnOut) est un raccourci pour attacher à la fois mouseenter et mouseleave. Ces événements ne se déclenchent pas lors du survol des éléments enfants, contrairement à mouseover/mouseout.
En entretien, expliquez la différence entre mouseenter/mouseleave (ne bubble pas, uniquement sur l'élément) et mouseover/mouseout (bubble, se déclenche aussi sur les enfants).