33
jQuery jQuery Par : Abdelhakim Bachar DAVEO

JQuery

Embed Size (px)

Citation preview

Page 1: JQuery

jQueryjQuery

Par : Abdelhakim BacharDAVEO

Page 2: JQuery

De JavaScript… à jQuery La naissance de JavaScript

1995 : Brendan Eich développe pour Netscape Communications Corporation, un langage de script, appelé Mocha, puis LiveScript et finalement JavaScript

Javascript est intégré dans le navigateur Netscape 2. Succès immédiat.

La guerre des navigateurs Netscape et Microsoft (avec JScript dans Internet Explorer) ont

développé leur propre variante de JavaScript avec des fonctionnalités supplémentaires et incompatibles, notamment dans la manipulation du DOM (modèle objet du navigateur WEB)

1997 : Adoption du standard ECMAScript.Les spécifications sont rédigées dans le document Standard ECMA-262.

Page 3: JQuery

La naissance de la fondation Mozilla Netscape perd des parts de marché face à Microsoft

Malgré un procès pour concurrence déloyale, Netscape, racheté par AOL est dissoute en 2004

Netscape, dans ses dernières forces, fonde  la fondation principauté Mozilla, et lui livre le code source de Netscape Navigator 5, qui contient les premières briques du moteur de rendu Gecko (aujourd’hui au coeur de Firefox).

Actuellement, les navigateurs web modernes supportent tous les spécifications ECMAScript

Mais chacun a étendu les spécifications pour utiliser au mieux son propre navigateur, ce qui a amené à des différences d’implémentation suivant le navigateur…

Page 4: JQuery

JavaScript devenu incontournable Les spécifications ECMAScript ont permis de pérenniser JavaScript

JavaScript permet de contrôler quasiment tous les paramètres d’une page WEB

C’est le seul langage, coté client, capable de changer dynamiquement l’aspect d’une page WEB

Avec l’arrivée de l’objet XMLHttpRequest permettant le développement d’applications AJAX, JavaScript est devenu incontournable dans le développement d’interfaces WEB évoluées (WEB2.0)

Page 5: JQuery

JQuery Une bibliothèque javascript open-source et cross-browser

Elle permet de traverser et manipuler très facilement l'arbre DOM des pages web à l'aide d'une syntaxe fortement similaire à celle d'XPath.

JQuery permet par exemple de changer/ajouter une classe CSS, créer des animations, modifier des attributs, etc.

Gérer les événements javascript

Faire des requêtes AJAX simplement

Page 6: JQuery

Ce que jQuery n’est pas Un substitut pour apprendre JavaScript

jQuery est très puissant et très pratique, mais vous devez néanmoins connaitre les bases de Javascript, notamment la partie “objet” du langage.

Voir des vlivres comme : “Object Oriented Javascript de Stoyan Stefanov” ou

“jQuery, novice to ninja” (google est votre ami)

Une réponse à tout Utilisez jQuery uniquement lorsque c’est nécessaire. On commence toujours par

HTML+CSS avant de chercher des plugins jQuery magiques. De nombreuses UI sont pures html+CSS

Page 7: JQuery

Une simple bibliothèque à importer Disponible sur le site de Jquery : http://jquery.com/

<script type="text/javascript" src="jquery.js"></script>

Ou directement sur Google code

<script type="text/javascript" src="http://ajax.googleapis.comajax/libs/jquery/1/jquery.min.js”>

</script>

Page 8: JQuery

La fonction jQuery() jQuery repose sur une seule fonction :

jQuery() ou $().

C’est une fonction JavaScript

Elle accepte des paramètres

Elle retourne un objet

$ : Syntaxe issue de « Prototype »

Page 9: JQuery

Selecteur magique : $('anything') ! $ accepte un sélecteur CSS en argument

$ accepte des ID : $('#nomID') retourne un élément <-> document.getElementById

$ accepte des classes : $('.nomClasse') retourne tous les éléments qui correspondent à cette classe

$ accepte plusieurs sélecteurs $('.article, .nouvelles, .edito')

$ accepte des sélecteurs spécifiques : $(':radio'), $(':header'), $(':first-child')

des sélecteurs en forme de filtres : $(':checked'), $(':odd'), $(':visible')

plus fort: $(':contains(du texte)')

des attributs $('a[href]'), $('a[href^=http://'), $('img[src$=.png]'

Page 10: JQuery

Rappel sur le DOM “Le Document Object Model (DOM) est une convention cross-platform et

independente du langage pour representier and interagir avec des objets dans des documents en HTML, XHTML ou XML.

Page 11: JQuery

Exemple de manipulation du DOM<html><script type="text/javascript" src="http://…/jquery.min.js”></script><body>

<div id="monDiv">Bonjour</div><a href="#" onClick="$('#monDiv').hide();”>disparition</a>

</body></html>

Page 12: JQuery

jQuery: un objet les méthodes s'appliquent généralement à tous les éléments sélectionnés

$('.classe').hide();

$('.classe').show();

de nombreuses méthodes utilitaires parcourir le DOM: .parent(), .next(), .children(), .parents()

ajouter ou retirer des classes CSS: addClass, removeClass

manipuler: append, wrap, prepend

Intérêt fondamental: la plupart des méthodes de l'objet retournent l'objet lui-même on peut chaîner les appels !

$('anything').parent().find('still anything').show();

Cette propriété est extrêmement puissante !

Page 13: JQuery

Nombreux exemples interactifs Les selecteurs jQuery sont illustrés par de nombreux tutoriaux interactifs,

par exemple : Ici : http://www.w3schools.com/jquery/jquery_examples.asp

Et là : http://docs.jquery.com/Tutorials:Live_Examples_of_jQuery

Page 14: JQuery

jQuery example d’utilisation 1

<ul> <li style=“background:red;”> <span>Changed</span> First item </li> <li> Second item </li> <li style=“background:red;”> <span>Changed</span> Third item </li></ul>

<ul> <li> First item </li> <li> Second item </li> <li> Third item </li></ul>

<ul> <li> <span>Changed</span> First item </li> <li> Second item </li> <li> <span>Changed</span> Third item </li></ul>

$(“li:odd”).prepend(‘<span>Changed</span>’).css({background:“red”});

Page 15: JQuery

jQuery example d’utilisation 2

<div> <span class=“foo”> Some text </span></div><div style=“display:none”> <span> More text </span> <span class=“foo”> </span></div>

<div> <span class=“foo”> Some text </span></div><div style=“display:none”> <span> More text </span> <span class=“foo”> Goodbye cruel world. </span></div>

<div> <span class=“foo”> Some text </span></div><div style=“display:none”> <span> More text </span> <span class=“foo”> Goodbye cruel world. </span></div>

$(“div:hidden”).find(“.foo”).empty().text(“Changed”).end().show();

<div> <span class=“foo”> Some text </span></div><div style=“display:block”> <span> More text </span> <span class=“foo”> Changed </span></div>

<div> <span class=“foo”> Some text </span></div><div style=“display:none”> <span> More text </span> <span class=“foo”> Changed </span></div>

<div> <span class=“foo”> Some text </span></div><div style=“display:none”> <span> More text </span> <span class=“foo”> Changed </span></div>

Page 16: JQuery

jQuery example d’utilisation 3 Determiner si une checkbox est cochée

if ($(‘#total’).attr(‘checked’)) {//Traitement si cochée

} else {//Traitement si non cochée

}

Page 17: JQuery

jQuery example d’utilisation 4 Intercepter le bouton submit d’un formulaire :

$(document).ready(function() {$(‘#ok’).submit(function() {

if ($(‘#login’).val() ==‘’) {alert (‘Entrer un login’);return false;

}})

});

Page 18: JQuery

jQuery example d’utilisation 5 Effacer le contenu d’un champs de texte lorsqu’il a le focus

<input name=“nom” type=“text” id=“nom” value=“Entrez votre nom”>

$(‘#nom’).focus(function() {var field = $(this);field.val(‘’);

});

Page 19: JQuery

jQuery example d’utilisation 6 Tester le clic sur n’importe quel bouton radio :

$(‘:radio’).click(function() {//do stuff

});

Donner le focus au premier élément d’un formulaire:

$(‘nom’).focus();

Page 20: JQuery

jQuery example d’utilisation 7<div>

<span class=“all”>Select All</span>

<span class=“none”>Select None</span>

<input name=“chk1” type=“checkbox”/>

<input name=“chk2” type=“checkbox”/>

<input name=“chk3” type=“checkbox”/>

</div>

<div>

<span class=“all”>Select All</span>

<span class=“none”>Select None</span>

<input name=“chk4” type=“checkbox”/>

<input name=“chk5” type=“checkbox”/>

<input name=“chk6” type=“checkbox”/>

</div>

$(“span.none”).click( function(){ $(this).siblings(“:checkbox”).removeAttr(“checked”); });

$(“span.all”).click( function(){ $(this).siblings(“:checkbox”).attr(“checked”,“checked”); });

$(“span”).click( function(){ if($(this).text()==“Select All”)) $(this).siblings(“:checkbox”).attr(“checked”,“checked”); else if ($(this).attr(“class”)==“none”) $(this).siblings(“:checkbox”).removeAttr(“checked”); });

Ou

Page 21: JQuery

Ajax JQuery possède toute une panoplie de fonctions permettant de simplifier les

requêtes Ajax

La plus simple :$('#maDiv').load('page.html');

Plus complexe :$.get('test.html’, function(data) { faire quelque chose });

Générale : $.ajax({

url: 'document.xml',type: 'GET',dataType: 'xml',timeout: 1000,error: function(){ alert('Erreur chargement'); },success: function(xml){ faire quelque chose }

});

Page 22: JQuery

Tutorial ajax/jQuery très complet ! Ici : http://viralpatel.net/blogs/2009/04/jquery-ajax-tutorial-example-ajax-

jquery-development.html

Page 23: JQuery

jQuery AJAX Exemple<html><head><title>AJAX Demo</title><script type=“text/javascript” src=“jquery.js”></script><script type=“text/javascript”>var cnt = 0;$(function(){ $.ajaxSettings({ error:function(){alert(“Communication error!”);} }); $(“:button”).click(function(){ var input = {in:$(“:textbox”).val(),count:cnt}; $.getJSON(“ajax.php”,input,function(json){ cnt = json.cnt; $(“.cnt”).text(cnt) $(“.msg”).text(json.out); }); });});</script></head><body><p> Input: <input type=“textbox”/> <input type=“button” value=“Send”/> Output # <span class=“cnt”></span>: <span class=“msg”></span></p></body></html>

<?php$output = ‘’;

switch($_REQUEST[‘in’]) { case ‘hello’: $output = ‘Hello back.’; break; case ‘foo’: $output = ‘Foo you, too.’; break; case ‘bar’: $output = ‘Where Andy Capp can be found.’; break; case ‘foobar’: $output = ‘This is German, right?’; break; default: $output = ‘Unrecognized string.’;}

$count = $_REQUEST[‘count’]+1;

echo json_encode( array( ‘out’ => $output, ‘cnt’ => $count ));

exit;?>

Page 24: JQuery

jQuery AJAX Fonctions $.func(url[,params][,callback])

$.get

$.getJSON

$.getIfModified

$.getScript

$.post

$(selector), inject HTML load

loadIfModified

$(selector), ajaxSetup alts ajaxComplete

ajaxError

ajaxSend

ajaxStart

ajaxStop

ajaxSuccess

$.ajax, $.ajaxSetup async beforeSend complete contentType data dataType error global ifModified processData success timeout type url

Page 25: JQuery

Inconvénients d’AJAX / XML XML est délicat à parser en Javascript/jQuery

$.ajax({ type: "GET", url: "courses.xml",dataType: "xml",complete : function(data, status) {

var products = data.responseXML;var html = “”;$(products).find('product').each(function() {

var id = $(this).attr('id');var name = $(this).find('name').text();var price =$(this).find('price').text();html += "<li>#"+id +" - "+name+” : ”+price+"</li>”;

});$("#cousesList").html(html);

}});

Page 26: JQuery

Inconvénients d’AJAX / Sécurité pour des raisons de sécurité, les navigateurs interdisent de faire du « cross-

domain » avec XMLHttpRequest dont le résultat serait du XML (et donc du HTML)….mais pas pour des scripts Javascript !

D’où l’idée de définir un modèle de données sous la forme d’objet Javascript JSON

Voir : http://www.jsonpexamples.com/

Page 27: JQuery

JSON (JavaScript Object Notation) format de données textuel, générique, dérivé de la notation des objets de

JavaScript

permet de représenter de l'information structurée.

décrit par la RFC 4627 de l’IETF.

Exemple :

{ "Image": {"Width": 800,"Height": 600,"Title": "Vue du 15ème étage","Thumbnail": {

"Url": "http://www.example.com/481989943","Height": 125,"Width": "100" },

"IDs": [116, 943, 234, 38793] }}

Page 28: JQuery

Les avantages de JSON Type de données générique et abstrait pouvant

être représenté dans n'importe quel langage de programmation

représenter n'importe quelle donnée concrète.

simple à mettre œuvre tout en étant complet.

peu verbeux, lisible aussi bien par un humain que par une machine

facile à apprendre, syntaxe réduite

types de données sont connus et simples à décrire

indépendant du langage de programmation (bien qu'utilisant une notation JavaScript)

Le type MIME application/json est utilisé pour le transmettre par le protocole HTTP (notamment en Ajax) Standard dans les web services .Net, Java EE, etc.

Page 29: JQuery

Les avantages de JSON Vis-à-vis de JavaScript, un document JSON représente un objet, d'où son

nom. Il est donc plus facile à interpréter qu'un XML.var donnees = eval('('+donnees_json+')');

Le site json.org fournit une liste de parseurs pour d'autres langages

Il peut aussi être utilisé pour : la sérialisation et déserialisation d'objets ;

l’encodage de documents ;

Page 30: JQuery

jQuery et JSON jQuery.getJSON( url, [ data ], [ callback(data, textStatus) ] )

Exemple :

<html><head><script src="jquery.min.js"></script>

</head><body>

<div id="images" style="height: 300px"></div><script>

$.getJSON("http://…/feeds/photos_public.gne? format=json”, function(data) {

$.each(data.items, function(i,item) {$("<img/>").attr("src",

item.media.m).appendTo("#images");if ( i == 3 )

return false; });});

</script></body></html>

Page 31: JQuery

jQuery Plugins On peut étendre facilement jQuery en utilisant des « plugins »

Les méthodes ajoutées sont au même niveau que les méthodes natives

Ils conservent les mêmes sémantiques que les méthodes natives: retourner l'objet jQuery, appliquer la méthode à tous les éléments représentés

Des centaines plugins existent d'ores et déjà, de qualité variable; certains mis en avant par l'équipe de développement

http://plugins.jquery.com/ Des menus

http://apycom.com/http://www.wizzud.com/jqDock/

Galerie photo : VisualLightboxhttp://visuallightbox.com

Page 32: JQuery

Conclusion jQuery est un framework complet et facile à utiliser

Bibliothèque légère à charger

Simplifier et unifie la syntaxe d’accès au DOM

Permet de faire des requètes AJAX simplement

UI et nombreux plugins complémentaires

D’autres frameworks sont disponibles et ne sont pas à oublier : il est possible de combiner les frameworks Dojo recommandé pour application riche en widgets et nécessitant une forte

cohérence (widgets MVC notamment)

Page 33: JQuery

jQuery ressources intéressantes Site officiel

http://www.jquery.com

Learning Center http://docs.jquery.com/Tutorials

http://www.learningjquery.com/

http://15daysofjquery.com/

http://www.roseindia.net/ajax/jquery/

Support http://docs.jquery.com/Discussion

http://www.nabble.com/JQuery-f15494.html mailing list archive

irc.freenode.net irc room: #jquery

Documentation http://docs.jquery.com/Main_Page

http://www.visualjquery.com

http://jquery.bassistance.de/api-browser/

jQuery Success Stories

http://docs.jquery.com/Sites_Using_jQuery