jQuery
Deuxième partie

Cours pour l'ESCEN Paris - 2017

Rappels

Outils

  • Emmet - un plugin pour faciliter l'écriture du HTML
  • Devdocs.io - un site qui regroupe la documentation de plein de langage

jQuery - les bases

Pour utiliser jQuery dans votre page web, il faut l'appeler avant la fermeture de la balise </body> suivie de votre/vos script(s)


Dans votre fichier script, vous englobez votre code dans un module pour l'isoler

// Méthode 1 (ancienne méthode, évitez de l'utiliser)
$(document).ready(function() {
  // Votre code JavaScript
});

// Méthode 2
$(function() {
  // Votre code JavaScript
});

// Méthode 3 (à préférer, car isole mieux votre code)
(function($) {
  // Votre code JavaScript
})(jQuery);

Écrire une instuction

  • On sélectionne un élément dans la page

    $('votre_element')…
  • Ensuite on lui applique une méthode/function

    $('votre_element').methode(…)
  • On termine l'instruction par un ;
  • Par exemple, pour ajouter un fond noir à votre page

    $('body').css('background-color', 'black');

Vous trouverez toutes les méthodes dans la documentation de jquery,
sur le site officiel
ou sur le site Devdocs.io

Sélectionner des éléments

Avec jQuery il existe plein de sélecteurs différents, vous allez le plus souvent vous baser sur les sélecteurs CSS.

// sélectionner les éléments qui ont la classe .toto
$('.toto')…

// sélectionner l'élément qui a l'#id .tata
$('#tata')…

// sélectionner le footer
$('footer')…

Vous trouverez les autres sélecteurs ici.

Exercice 1

  • Télécharger les fichiers à cette url.
  • Avec la méthode .attr() modifiez tous les liens et faites les pointer vers la page d'accueil de google.
  • Faites la même chose, mais uniquement sur le troisième lien.

Solution

// Modifie tous les liens
$('a').attr('href', 'http://www.google.fr');

// Modifie le troisième lien
$('ul li:nth-child(3) a').attr('href', 'http://www.google.fr');

Modification du HTML
(avec jQuery)

Exercice 2

Remplacer le texte du dernier lien par autre chose (exemple : Salut).

Solution

// première solution possible
$('a:last').text('Salut');

// autre solution
$('a:last').html('Salut');

Exercice 3

Ajouter du texte à la fin de la div#test1.

Solution

var $div = $('#test1');
var $p = $('<p>Texte ajouté<p/>');

$div.append($p);

Exercice 4

Ajouter du texte au début de la div#test1.

Solution

var $div = $('#test1');
var $p = $('<p>Texte ajouté<p/>');

$div.prepend($p);

Les événements utilisateurs

En JavaScript, on peut effectuer quelque chose en réponse à une action d'un utilisateur.
Avec jQuery, on fait ça avec différentes méthodes.

Exemple

$(element).click(function() {
  // Code JS à exécuter en réponse à un clic de souris.
});

Exercice 5

  • Effacer le code de l'exercice précédent
  • Quand on clique sur un lien, faire en sorte qu'il ait l'apparence active
  • Avec les méthodes .hide() et .show() cacher le texte présent et afficher celui qui correspond au lien

Solution

$('a').click(function() {
  $('a').removeClass('active');
  $(this).addClass('active');

  $('.textTab').hide();
  $($(this).attr('href')).show();
});

Un peu d'animation

Exercice 6

Maintenant vous allez utiliser les méthodes .fadeOut() et .fadeIn() pour cacher et afficher les textes selon le lien cliqué.

Solution

$('a').click(function() {
  var $target = $($(this).attr('href'));

  $('a').removeClass('active');
  $(this).addClass('active');

  $target.siblings(':visible').fadeOut(500, function() {
    $target.fadeIn(500);
  })
});

Rappel

La console du navigateur

Pour l'afficher

  • sur Windows : touche F12 du clavier
  • sur OSX : touches alt + cmd + i

Cliquer sur l'onglet console

Exercice 7

Afficher quelque chose dans la console en insérant la ligne suivante dans le fichier script.js

console.log('afficher quelque chose');

Rappel

Les fonctions

Une fonction commence par le mot clé function suivie d'un nom si on veut l'appeler plus tard, de parenthèses où l'on peut mettre des arguments et d'accolades.

On écrit le code à exécuter entre les accolades.

function afficherAlert(argument) {
  // le code à executer
  alert(argument);
}

// on appelle la fonction
afficherAlert('Coucou !'); // Va afficher 'Coucou !'

Exercice 8

Écrire une fonction qui affiche un message dans la console du navigateur.

Solution

function afficherMessage(argument) {
  console.log(argument);
}

afficherMessage('Coucou !');

Les tableaux

Les tableaux s'écrivent entre crochets.

// Un tableau
var fruits = ['Pomme', 'Banane', 'Ananas'];

Exercice 9

Javascript possède une méthode pour parcourir tous les éléments d'un tableau. Cette méthode c'est forEach().
Copier le tableau fruits de la slide précédente dans le fichier script.js et afficher dans la console chaque élément du tableau.

Solution

var fruits = ['Pomme', 'Banane', 'Ananas'];

fruits.forEach(function(element) {
  console.log(element);
});

Les objets

Les objets s'écrivent entre accolades, chaque élément d'un tableau doit avoir un couple de clé/valeur.

// Un objet
var individu = { "nom": "Doe", "prenom": "John", "age": 35 };

Exercice 10

Copier l'objet individu de la slide précédente dans le fichier script.js et afficher dans la console le prénom de l'individu.

Solution

var individu = { "nom": "Doe", "prenom": "John", "age": 35 };

console.log(individu.prenom);

AJAX

L'AJAX (pour les curieux, la page Wikipedia) permet de charger du contenu dans la page sans recharger complètement celle-ci.

On fait appel à la méthode .ajax() de jquery pour l'utiliser.

Exercice 11

Si vous allez à cette url vous verrez une liste d'utilisateur.
Récupérez cette liste grâce à la méthode .ajax() et affichez là dans la console.

Solution

$.ajax({
  url: "http://jsonplaceholder.typicode.com/users"
}).done(function(data) {
  console.log(data);
}).fail(function() {
  console.log('erreur de chargement');
});

Exercice 12

  • Parcourez le tableau obtenu (data) et affichez dans la console chaque élément de celui-ci.
  • Affichez dans la console uniquement le nom des utilisateurs.

Solution

$.ajax({
  url: "http://jsonplaceholder.typicode.com/users"
}).done(function(data) {
  data.forEach(function(element) {
    // affiche les éléments en entier
    console.log(element);

    // affiche le nom des utilisateurs
    console.log(element.name);
  });
}).fail(function() {
  console.log('erreur de chargement');
});

Exercice 13

  • Dans le fichier index.html, écrivez ce code dans la div#test1 sous le titre pour créer un bouton
    button
  • Affichez la liste d'utilisateur dans la console uniquement au clic sur le bouton

Solution

$('#button1').click(function() {
  $.ajax({
    url: "http://jsonplaceholder.typicode.com/users"
  }).done(function(data) {
    data.forEach(function(element) {
      console.log(element.name);
    });
  }).fail(function() {
    console.log('erreur de chargement');
  });
});

Exercice 14

Maintenant, au clic sur le bouton, au lieu d'afficher la liste des noms dans la console, vous allez :

  • supprimer la balise <p> sous le bouton
  • insérer la balise suivante après le bouton
    <ul id="list"></ul>
  • créez une balise <li> par nom avec le nom à l'intérieur et les insérer les <li> à la suite dans le ul#list

Solution

$('#button1').click(function() {
  $.ajax({
    url: "http://jsonplaceholder.typicode.com/users"
  }).done(function(data) {
    $('#button1 + p').remove();
    $('#test1').append('<ul id="list"></ul>');
    data.forEach(function(element) {
      $('#list').append($('<li>').text(element.name));
    });
  }).fail(function() {
    console.log('erreur de chargement');
  });
});