<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>By Myself &#187; css</title>
	<atom:link href="http://www.warpdesign.fr/blog/tag/css/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.warpdesign.fr/blog</link>
	<description>All by Myself</description>
	<lastBuildDate>Sat, 21 Jan 2012 00:18:25 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Migration jQuery ↔ Prototype</title>
		<link>http://www.warpdesign.fr/blog/2010/08/08/migration-jquery-prototype/</link>
		<comments>http://www.warpdesign.fr/blog/2010/08/08/migration-jquery-prototype/#comments</comments>
		<pubDate>Sun, 08 Aug 2010 14:18:26 +0000</pubDate>
		<dc:creator>leo</dc:creator>
				<category><![CDATA[Techno]]></category>
		<category><![CDATA[Xperiments]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[palm]]></category>
		<category><![CDATA[pixi]]></category>
		<category><![CDATA[pre]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[retrieve]]></category>
		<category><![CDATA[setstyle]]></category>
		<category><![CDATA[store]]></category>
		<category><![CDATA[webkit]]></category>
		<category><![CDATA[webos]]></category>

		<guid isPermaLink="false">http://www.warpdesign.fr/blog/?p=363</guid>
		<description><![CDATA[Ayant récemment porté warpklondike sur le framework jQuery vers le framework Prototype pour la version webOS du jeu, j&#8217;ai pensé que c&#8217;était une bonne idée de partager mon expérience&#8230; Voici donc un petit article présentant les principales différences entre ces deux frameworks.



Introduction
La principale différence entre jQuery et Prototype est que jQuery n&#8217;étend ni le JavaScript, [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.warpdesign.fr/blog/images/jquery_prototype.png" alt="jquery prototype"><br />Ayant récemment porté <a href="http://www.warpdesign.fr/entertainment" title="Visiter le site de WarpKlondike">warpklondike</a> sur le framework jQuery vers le framework Prototype pour la version webOS du jeu, j&#8217;ai pensé que c&#8217;était une bonne idée de partager mon expérience&#8230; Voici donc un petit article présentant les principales différences entre ces deux frameworks.
</p>
<p><span id="more-363"></span></p>
<p>
<b>Introduction</b><br />
La principale différence entre jQuery et Prototype est que jQuery n&#8217;étend ni le JavaScript, ni le DOM: jQuery est un simple <i>wrapper</i> autour des éléments du DOM. Les méthodes sont donc disponibles sur les objets/collections jQuery et non sur les éléments du DOM.</p>
<pre>
<code>$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'.maClasse'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">each</span><span style="color: #66cc66;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #009900; font-style: italic;">// $() nous avons à faire à l'objet jQuery ici</span>
    $<span style="color: #66cc66;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">addClass</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'selected'</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
    <span style="color: #009900; font-style: italic;">// this est l'objet DOM (non étendu)</span>
    <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">addClass</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'selected'</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #009900; font-style: italic;">// error: addClass() is not a function</span>
<span style="color: #66cc66;">&#125;</span></code>
</pre>
<p>Prototype, à l&#8217;inverse, étend le DOM (notamment l&#8217;objet Element) avec ses propres méthodes. De même, l&#8217;objet Array se voit étendu. Outre le côté implémentation galère: chaque navigateur change à chaque mise à jour, implémentant de nouvelles méthodes: que se passe-t&#8217;il lorsque le navigateur implémente la méthode document.getElementByClassName() ensuite étendue par le framework ? Une grosse <b>collision</b> <img src='http://www.warpdesign.fr/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Une fois le framework fixé, il faut aussi fixer tout le code utilisant cette méthode&#8230;</p>
<pre>
<code><span style="color: #003366; font-weight: bold;">var</span> monDiv = <span style="color: #003366; font-weight: bold;">new</span> Element<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'div'</span><span style="color: #66cc66;">&#41;</span>;
monDiv.<span style="color: #006600;">addClassName</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'selected'</span><span style="color: #66cc66;">&#41;</span>;  <span style="color: #009900; font-style: italic;">// fonctionne, puisque l'objet Element a été étendu par Prototype</span></code>
</pre>
<p>Il semblerait donc que l&#8217;approche utilisée par jQuery soit bien meilleure. Il est à noter que la version 2.0 de Prototype n&#8217;étendra d&#8217;ailleurs pas le DOM comme cela avait été le cas jusqu&#8217;à maintenant: <a href="http://ajaxian.com/archives/prototype-2-0-will-not-extend-the-dom" target="_blank">Ajaxian: prototype 2.0 will not extend the dom</a>.<br />
<b>1. le sélecteur $</b><br />
<b>$</b> est surement la première chose que l&#8217;on découvre en se lançant dans jQuery, et la fonctionne existe aussi dans Prototype, mais les deux fonctionnent différemment. Dans jQuery, <b>$</b> fait office de sélecteur universel:</p>
<pre>
<code><span style="color: #003366; font-weight: bold;">var</span> $maCollection = $<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'.maClass'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #003366; font-weight: bold;">var</span> $mesInput = $<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'form input'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #003366; font-weight: bold;">var</span> $monSubmit = $<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'#monSubmit'</span><span style="color: #66cc66;">&#41;</span>;</code>
</pre>
<p>Avec Prototype, <b>$</b> est en fait un raccourci vers <i>document.getElementById()</i>. Pour obtenir un sélecteur universel comme sur jQuery il faudra utiliser le <b>$$</b>:<br />
deviendra:</p>
<pre>
<code><span style="color: #003366; font-weight: bold;">var</span> $maCollection = $$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'.maClass'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #003366; font-weight: bold;">var</span> $mesInput = $$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'form input'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #003366; font-weight: bold;">var</span> $monSubmit = $$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'#monSubmit'</span><span style="color: #66cc66;">&#41;</span>;</code>
</pre>
<p><b>Note:</b> l&#8217;appel d&#8217;une méthode sur une collection d&#8217;éléments jQuery appellera automatiquement la méthode sur chaque élément. Par exemple $(&#8217;.maClasse&#8217;).addClass(&#8217;selected&#8217;) appliquera la classe <i>selected</i> à chaque élément. A l&#8217;inverse, Prototype étendant le DOM, les méthodes sont accessibles sur chaque élément et non pas sur la collection d&#8217;éléments: $$(&#8217;.maClass&#8217;).addClassName(&#8217;selected&#8217;) ne fonctionnera pas. Il faudrait parcourir la collection avec each().</p>
<p>
<b>2. document.ready()</b><br />
Le JavaScript a accès au DOM avant même qu&#8217;il soit finit d&#8217;être chargé. Pour être sûr qu&#8217;il le soit, et que nos modifications puissent donc fonctionner, jQuery fournit la méthode $(document).ready(), automatiquement appelée lorsque le DOM est prêt:</p>
<pre>
<code>$<span style="color: #66cc66;">&#40;</span>document<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">ready</span><span style="color: #66cc66;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
   <span style="color: #000066;">alert</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'prêt !'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;</code>
</pre>
<p>L&#8217;équivalent Prototype (1.6) serait:</p>
<pre>
<code>document.<span style="color: #006600;">observe</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'contentloaded'</span>, <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
   <span style="color: #000066;">alert</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'prêt !'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;</code>
</pre>
<p>
<b>3. itération</b><br />
jQuery utilise la méthode each() pour itérer sur une collection d&#8217;éléments. A l&#8217;intérieur de la fonction each, this correspond à l&#8217;objet DOM (non étendu), et $(this) permet d&#8217;accéder à l&#8217;objet jQuery. Enfin, each passe l&#8217;index de l&#8217;élément en cours à la fonction callback (optionnel):</p>
<pre>
<code>$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'.maClasse'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">each</span><span style="color: #66cc66;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
   $<span style="color: #66cc66;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">addClass</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'selected'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;</code>
</pre>
<p>Prototype fournit une méthode each() équivalente, à la différence prêt que le this n&#8217;est pas assigné, comme par magie dans jQuery (beaucoup de choses se font par magie dans jQuery <img src='http://www.warpdesign.fr/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) à l&#8217;objet courant. Dans Prototype la fonction callback se voit passer comme paramètres l&#8217;élément courant, et l&#8217;index:</p>
<pre>
<code>$$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'.maClasse'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">each</span><span style="color: #66cc66;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>elt, i<span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
   elt.<span style="color: #006600;">addClassName</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'selected'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;</code>
</pre>
<p></p>
<p><b>4. modification de contenu</b><br />
Pour modifier le contenu d&#8217;un élément avec jQuery, il existe principalement deux manières. On veut écraser tout le contenu d&#8217;un élément:</p>
<pre>
<code><span style="color: #009900;"><a href="http://december.com/html/4/element/p.html"><span style="color: #000000; font-weight: bold;">&lt;p</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;monParagraphe&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
   Ancien contenu.
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p&gt;</span></span></code>
</pre>
<pre>
<code>$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'#monParagraphe'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">html</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'nouveau contenu :)'</span><span style="color: #66cc66;">&#41;</span>;</code>
</pre>
<p>Ce qui donnera:</p>
<pre>
<code><span style="color: #009900;"><a href="http://december.com/html/4/element/p.html"><span style="color: #000000; font-weight: bold;">&lt;p</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;monParagraphe&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
   nouveau contenu :)
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p&gt;</span></span></code>
</pre>
<p>
Le code Prototype correspondant serait:</p>
<pre>
<code>$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'monParagraphe'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">update</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'nouveau contenu :)'</span><span style="color: #66cc66;">&#41;</span>;</code>
</pre>
<p>
Pour ajouter un élément, ou du texte à autre élément, jQuery fournit les méthodes: <b>append()</b> et <b>prepend()</b> qui rajoutent respectivement du contenu en fin, et en début d&#8217;élément:</p>
<pre>
<code><span style="color: #009900;"><a href="http://december.com/html/4/element/p.html"><span style="color: #000000; font-weight: bold;">&lt;p</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;monParagraphe&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
   Ancien contenu.
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p&gt;</span></span></code>
</pre>
<p></p>
<pre>
<code><span style="color: #003366; font-weight: bold;">var</span> $span1 = $<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'&lt;span/&gt;'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">html</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'avant'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #003366; font-weight: bold;">var</span> $span2 = $<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'&lt;span/&gt;'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">html</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'apres'</span><span style="color: #66cc66;">&#41;</span>;
$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'#monParagraphe'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">prepend</span><span style="color: #66cc66;">&#40;</span>$span1<span style="color: #66cc66;">&#41;</span>;
$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'#monParagraphe'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">append</span><span style="color: #66cc66;">&#40;</span>$span2<span style="color: #66cc66;">&#41;</span>;</code>
</pre>
<p>Ce qui donnera:</p>
<pre>
<code><span style="color: #009900;"><a href="http://december.com/html/4/element/p.html"><span style="color: #000000; font-weight: bold;">&lt;p</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;monParagraphe&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
   <span style="color: #009900;"><a href="http://december.com/html/4/element/span.html"><span style="color: #000000; font-weight: bold;">&lt;span&gt;</span></a></span>avant<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/span&gt;</span></span>
   nouveau contenu :)
   <span style="color: #009900;"><a href="http://december.com/html/4/element/span.html"><span style="color: #000000; font-weight: bold;">&lt;span&gt;</span></a></span>apres<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/span&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p&gt;</span></span></code>
</pre>
<p>
Prototype fournit une méthode &laquo;&nbsp;tout-en-un&nbsp;&raquo; <b>insert</b> qui permet de rajouter du contenu en début et fin d&#8217;élément en un seul appel. Le code Prototype correspondant serait:</p>
<pre>
<code><span style="color: #003366; font-weight: bold;">var</span> $span1 = <span style="color: #003366; font-weight: bold;">new</span> Element<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'span'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">update</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'avant'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #003366; font-weight: bold;">var</span> $span2 = <span style="color: #003366; font-weight: bold;">new</span> Element<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'span'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">update</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'apres'</span><span style="color: #66cc66;">&#41;</span>;
$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'monParagraphe'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">insert</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#123;</span>
   top: $span1,
   bottom: $span2
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;</code>
</pre>
<p>
<b>5. Modification CSS</b><br />
Pour modifier l&#8217;aspect d&#8217;un élément à l&#8217;aide des CSS, rien de plus simple avec jQuery: la méthode <b>css()</b> permet de modifier un ou plusieurs attributs CSS:</p>
<pre>
<code>$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'#monParagraphe'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">css</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#123;</span>
  border: <span style="color: #3366CC;">'1px solid red'</span>,
  <span style="color: #3366CC;">'background-color'</span>: <span style="color: #3366CC;">'green'</span>
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;</code>
</pre>
<p>Ce qui donnera:</p>
<pre>
<code><span style="color: #009900;"><a href="http://december.com/html/4/element/p.html"><span style="color: #000000; font-weight: bold;">&lt;p</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;monParagraphe&quot;</span> <span style="color: #000066;">style</span>=<span style="color: #ff0000;">&quot;border:1px solid red; background-color:green;&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
   <span style="color: #009900;"><a href="http://december.com/html/4/element/span.html"><span style="color: #000000; font-weight: bold;">&lt;span&gt;</span></a></span>avant<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/span&gt;</span></span>
   nouveau contenu :)
   <span style="color: #009900;"><a href="http://december.com/html/4/element/span.html"><span style="color: #000000; font-weight: bold;">&lt;span&gt;</span></a></span>apres<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/span&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p&gt;</span></span></code>
</pre>
<p><b>Note:</b> La méthode CSS reconnait à la fois les noms d&#8217;attributs CSS et leur variante Camel Case. Pour modifier le &laquo;&nbsp;background-color&nbsp;&raquo;, on aurait donc aussi pu utiliser: backgroundColor: &#8216;green&#8217;.<br />
<br />
Prototype fournit la méthode équivalente <b>setStyle</b>:</p>
<pre>
<code>$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'monParagraphe'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">setStyle</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#123;</span>
  border: <span style="color: #3366CC;">'1px solid red'</span>,
  backgroundColor: <span style="color: #3366CC;">'green'</span>
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;</code>
</pre>
<p><b>Note:</b> Prototype ne reconnait que du Camel Case. Il n&#8217;est donc pas possible de modifier l&#8217;attribut background-color en utilisant: &#8216;background-color&#8217;: &#8216;green&#8217; et il faut impérativement utiliser du Camel Case comme dans l&#8217;exemple précédent.<br />
<br />
<b>6. Cacher/Afficher des éléments</b><br />
Pour cacher ou afficher un élément avec jQuery, rien de plus simple:</p>
<pre>
<code>$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'#monParagraphe'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">hide</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</code>
</pre>
<p>aura pour effet de cacher le paragraphe:</p>
<pre>
<code><span style="color: #009900;"><a href="http://december.com/html/4/element/p.html"><span style="color: #000000; font-weight: bold;">&lt;p</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;monParagraphe&quot;</span> <span style="color: #000066;">style</span>=<span style="color: #ff0000;">&quot;display:none;&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  Mon Paragraphe
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p&gt;</span></span></code>
</pre>
<p>Pour réafficher un paragraphe caché (par CSS ou bien par jQuery), il suffit de faire appel à la méthode <b>show()</b>:</p>
<pre>
<code>$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'#monParagraphe'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">show</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</code>
</pre>
<p>
Prototype fournit deux méthodes équivalentes: <b>show</b> et <b>hide</b> mais <b>attention</b> ! Prototype <b>n&#8217;est pas capable d&#8217;afficher un élément qui aurait été caché au niveau CSS</b> (ayant la propriété display settée à <i>none</i>). Exemple:</p>
<pre>
<code><span style="color: #cc00cc;">#monParagraphe</span><span style="color: #66cc66;">&#123;</span>
  display<span style="color: #3333ff;">:none</span>;
<span style="color: #66cc66;">&#125;</span></code>
</pre>
<p>L&#8217;appel à show() <b>n&#8217;aura aucun effet</b> dans ce cas:</p>
<pre>
<code>$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'#monParagraphe'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">show</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</code>
</pre>
<p>Il sera nécessaire dans ce cas de modifier directement la propriété CSS display en écrivant par exemple:</p>
<pre>
<code>$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'#monParagraphe'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">style</span>.<span style="color: #006600;">display</span> = <span style="color: #3366CC;">'block'</span>;</code>
</pre>
<p>
<b>7. Pour aller plus loin</b><br />
jQuery permet d&#8217;assigner des données à chaque élément du DOM à l&#8217;aide de la méthode <b>data</b>:</p>
<pre>
<code><span style="color: #003366; font-weight: bold;">var</span> mesDonnees = <span style="color: #66cc66;">&#123;</span>test: <span style="color: #3366CC;">'yep !'</span><span style="color: #66cc66;">&#125;</span>;
$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'#monParagraphe'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">data</span><span style="color: #66cc66;">&#40;</span>mesDonnees<span style="color: #66cc66;">&#41;</span>;</code>
</pre>
<p>Pour récupérer ces mêmes données, il suffit alors d&#8217;appeler <b>data</b> sans paramètre:</p>
<pre>
<code><span style="color: #003366; font-weight: bold;">var</span> mesDonnees = $<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'#monParagraphe'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">data</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #009900; font-style: italic;">// { test: 'yop !' }</span></code>
</pre>
<p>
Là encore, Prototype fournit les méthodes <b>store</b> et <b>retrieve</b> équivalentes:</p>
<pre>
<code>$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'monParagraphe'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">store</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'test'</span>, <span style="color: #3366CC;">'yep !'</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #009900; font-style: italic;">// { test: 'yop !' }</span>
<span style="color: #003366; font-weight: bold;">var</span> test = $<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'monParagraphe'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">retrieve</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'test'</span><span style="color: #66cc66;">&#41;</span>;  <span style="color: #009900; font-style: italic;">// test == 'yop !'</span></code>
</pre>
<p>
<b>Quelques liens</b><br />
Pour finir, et pour en savoir plus, voici quelques liens utiles:</p>
<ul>
<li>Documentation officielle de jQuery: <a target="_blank" href="http://api.jquery.com/" title="Documentation jQuery">api.jquery.com</a></li>
<li>Documentation officielle de Prototype: <a target="_blank" href="http://api.prototypejs.org/" title="Documentation jQuery">http://api.prototypejs.org/</a></li>
</ul>
<p><img src="http://www.warpdesign.fr/blog/images/jaquettes/sleepysunFeverArt.jpg" style="float:left;margin-right:14px;" alt="Fever Art" /><a href="http://www.myspace.com/sleepysun" target="_blank">SleepySun</a> &nbsp;[ Rock spychiadélique ]<br />
<b>Ambiance:</b> Rock Psychiadélique<br />
<b>Albums:</b> Fever Art<br />
<b>A écouter:</b> Open Eyes<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.warpdesign.fr/blog/2010/08/08/migration-jquery-prototype/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS: vertical-align</title>
		<link>http://www.warpdesign.fr/blog/2009/07/22/css-vertical-align/</link>
		<comments>http://www.warpdesign.fr/blog/2009/07/22/css-vertical-align/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 21:11:19 +0000</pubDate>
		<dc:creator>leo</dc:creator>
				<category><![CDATA[Techno]]></category>
		<category><![CDATA[ancient astronauts]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[vertical-align]]></category>
		<category><![CDATA[w3c]]></category>
		<category><![CDATA[we are to answer]]></category>
		<category><![CDATA[web standards]]></category>

		<guid isPermaLink="false">http://www.warpdesign.fr/blog/?p=308</guid>
		<description><![CDATA[M&#8217;étant assez souvent arraché les cheveux pour aligner correctement une simple image contenue dans du texte, je suis récemment tombé sur un article très clair détaillant l&#8217;utilisation de la propriété CSS vertical-align. Voici la traduction française de cet article.

&#160;
Intro
Commencons par un exemple &#8211; un paragraphe contenant une simple ligne de texte et une petite image [...]]]></description>
			<content:encoded><![CDATA[<p><img style="float: left; margin-right: 10px;" src="http://www.warpdesign.fr/blog/images/css2.gif" alt="css2" />M&#8217;étant assez souvent arraché les cheveux pour aligner correctement une simple image contenue dans du texte, je suis récemment tombé sur un article très clair détaillant l&#8217;utilisation de la propriété CSS <em>vertical-align</em>. Voici la traduction française de cet article.</p>
<p><span id="more-308"></span></p>
<div style="clear:both">&nbsp;</div>
<p><strong>Intro</strong><br />
Commencons par un exemple &#8211; un paragraphe contenant une simple ligne de texte et une petite image (le carré bleu ci-dessus).<br />
<img style="margin:0;border:0;padding:0;" src="http://www.warpdesign.fr/blog/images/css/align-image01.gif" alt="" /></p>
<p><strong>Lignes de positionnement</strong><br />
Voyons sans attendre les 6 lignes primaires utilisées lors de l&#8217;alignement vertical.</p>
<p>1. top line &#8211; cette ligne se situe au dessus de tout le contenu</p>
<p><img style="margin:0;border:0;padding:0;" src="http://www.warpdesign.fr/blog/images/css/align-image02.gif" alt="" /></p>
<p>2. ligne text-top &#8211; cette ligne délimite le sommet du texte (en incluant les accents)</p>
<p><img style="margin:0;border:0;padding:0;" src="http://www.warpdesign.fr/blog/images/css/align-image03.gif" alt="" /></p>
<p><strong>NB:</strong> Les lignes “top line” and “text-top” peuvent paraître identiques. Mais ce n&#8217;est pas le cas, dans certains cas la top line (marquée en rouge ci-dessous), est plus haute que le contenu texte &#8211; et par conséquent, plus haute que la ligne text-top (marquée en vert ci-dessous). L&#8217;image suivante, très grande (plus haute que le texte) illustre ce cas particulier:</p>
<p><img style="margin:0;border:0;padding:0;" src="http://www.warpdesign.fr/blog/images/css/align-image04.gif" alt="" /></p>
<p>3. middle line &#8211; cette ligne se situe au milieu de la hauteur de la lettre x</p>
<p><img style="margin:0;border:0;padding:0;" src="http://www.warpdesign.fr/blog/images/css/align-image05.gif" alt="" /></p>
<p>4. baseline &#8211; c&#8217;est la ligne imaginaire sur laquelle reposent toutes les lettres</p>
<p><img style="margin:0;border:0;padding:0;" src="http://www.warpdesign.fr/blog/images/css/align-image06.gif" alt="" /></p>
<p>5. text-bottom line &#8211; cette ligne se situe en dessous de tout caractère (en incluant des lettres comme “j”, “y”, “g” etc&#8230;)</p>
<p><img style="margin:0;border:0;padding:0;" src="http://www.warpdesign.fr/blog/images/css/align-image07.gif" alt="" /></p>
<p>6. bottom line &#8211; cette ligne se situe en dessous de tout le contenu</p>
<p><img style="margin:0;border:0;padding:0;" src="http://www.warpdesign.fr/blog/images/css/align-image08.gif" alt="" /></p>
<p></p>
<p><strong>Alignement vertical par défaut</strong></p>
<p>Par défaut, le bas de l&#8217;image s&#8217;alignera sur la <em>baseline</em> du paragraphe &#8211; à moins que l&#8217;image ait une <em>margin-bottom</em> d&#8217;appliquée. Dans ce cas, le bas de la marge de l&#8217;image s&#8217;alignera sur la <em>baseline</em> du paragraphe. Dans l&#8217;exemple ci-dessous, l&#8217;image a la marge suivante: “margin-bottom: 5px” ce qui fait que le bas de l&#8217;image se placera 5 pixels au dessus de la <em>baseline</em>.</p>
<p><img style="margin:0;border:0;padding:0;" src="http://www.warpdesign.fr/blog/images/css/align-image09.gif" alt="" /></p>
<p><strong>Utilisation des CSS pour modifier l&#8217;alignement vertical</strong></p>
<p>Il est possible de modifier la position verticale des images par rapport au texte l&#8217;entourant en utilisant la propriété CSS <a title="voir la définition officielle de vertical-align" href="http://www.w3.org/tr/css2/visudet.html#propdef-vertical-align">vertical-align</a>.</p>
<p>Cette propriété peut prendre les valeurs suivantes: top, text-top, middle, baseline, text-bottom, bottom, sub, super, percentage et length.</p>
<p><strong>Top</strong></p>
<p>Le haut de l&#8217;image sera aligné avec la <em>top line</em>.</p>
<pre><code>img.class-name { vertical-align: top; }</code></pre>
<p><img style="margin:0;border:0;padding:0;" src="http://www.warpdesign.fr/blog/images/css/align-image11.gif" alt="" /></p>
<p><strong>Text-top</strong></p>
<p>Cela aura pour effet d&#8217;aligner le haut de l&#8217;image avec la <em>top line</em>.</p>
<pre><code>img.class-name { vertical-align: text-top; }</code></pre>
<p><img style="margin:0;border:0;padding:0;" src="http://www.warpdesign.fr/blog/images/css/align-image11.gif" alt="" /></p>
<p><strong>Middle</strong></p>
<p>Ceci alignera le milieu vertical de l&#8217;image avec la <em>baseline</em> plus la moitié de la hauteur de la lettre x du paragraphe.</p>
<pre><code>img.class-name { vertical-align: middle; }</code></pre>
<p><img style="margin:0;border:0;padding:0;" src="http://www.warpdesign.fr/blog/images/css/align-image13.gif" alt="" /></p>
<p><strong>Baseline</strong></p>
<p>Bien que les images soient par défaut alignées par rapport à la <em>baseline</em>, il est possible de spécifier cette option en utilisant les CSS.</p>
<pre><code>img.class-name { vertical-align: baseline; }</code></pre>
<p><img style="margin:0;border:0;padding:0;" src="http://www.warpdesign.fr/blog/images/css/align-image10.gif" alt="" /></p>
<p><strong>Text-bottom</strong></p>
<p>Le bas de l&#8217;image sera aligné par rapport à la <em>bottom line</em>.</p>
<pre><code>img.class-name { vertical-align: text-bottom; }</code></pre>
<p><img style="margin:0;border:0;padding:0;" src="http://www.warpdesign.fr/blog/images/css/align-image12.gif" alt="" /></p>
<p><strong>Sub</strong></p>
<p>Ceci alignera le bas de l&#8217;image avec la <em>baseline</em> du contenu indicé (qu&#8217;il y ait ou non du contenu indicé présent dans le texte).</p>
<pre><code>img.class-name { vertical-align: sub; }</code></pre>
<p><img style="margin:0;border:0;padding:0;" src="http://www.warpdesign.fr/blog/images/css/align-image14.gif" alt="" /></p>
<p><strong>Super</strong></p>
<p>Ceci alignera le bas de l&#8217;image avec la basline du contenu exposant (qu&#8217;il y ait ou non du contenu exposant présent dans le texte).</p>
<pre><code>img.class-name { vertical-align: super; }</code></pre>
<p><img style="margin:0;border:0;padding:0;" src="http://www.warpdesign.fr/blog/images/css/align-image15.gif" alt="" /></p>
<p><strong>Percentage</strong></p>
<p>Ceci décalera vers le haut (valeur positive) ou vers le bas (valeur négative) l&#8217;image par rapport à la <em>baseline</em> de la valeur spécifiée. La valeur ‘0%’ correspond à la <em>baseline</em> inchangée. A noter que le positionnement vertical en pourcentage pourra, une fois n&#8217;est pas coutume, varier légèrement selon le navigateur utilisé.</p>
<pre><code>img.class-name { vertical-align: 30%; }</code></pre>
<p><img style="margin:0;border:0;padding:0;" src="http://www.warpdesign.fr/blog/images/css/align-image16.gif" alt="" /></p>
<pre><code>img.class-name { vertical-align: -30%; }</code></pre>
<p><img style="margin:0;border:0;padding:0;" src="http://www.warpdesign.fr/blog/images/css/align-image17.gif" alt="" /></p>
<p><strong>Taille</strong></p>
<p>Ceci décalera vers le haut (valeur positive) ou vers le bas (valeur négative) l&#8217;image par rapport à la <em>baseline</em> de la valeur spécifiée. La valeur ‘0px’ correspond à la <em>baseline</em> inchangée.</p>
<pre><code>img.class-name { vertical-align: 2px; }</code></pre>
<p><img style="margin:0;border:0;padding:0;" src="http://www.warpdesign.fr/blog/images/css/align-image16.gif" alt="" /></p>
<pre><code>img.class-name { vertical-align: -2px; }</code></pre>
<p><img style="margin:0;border:0;padding:0;" src="http://www.warpdesign.fr/blog/images/css/align-image17.gif" alt="" /></p>
<p>Voila, j&#8217;espère avoir écrit l&#8217;article avant que vous n&#8217;ayez plus de cheveux <img src='http://www.warpdesign.fr/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Vous pouvez retrouver l&#8217;article original, en Anglais, ici: <a title="lire l'article original" href="http://www.maxdesign.com.au/2008/10/05/vertical-align/">http://www.maxdesign.com.au/2008/10/05/vertical-align/</a></p>
<p>Le petit coup de coeur du moment nous vient d&#8217;Allemagne et s&#8217;appelle Ancient Astronauts, extrait:</p>
<p><img style="float:left;margin-right:14px;" src="http://www.warpdesign.fr/blog/images/jaquettes/aa_sample.jpg" alt="" /><a href="http://www.myspace.com/ancientastronautsswitch" target="_blank">Ancient Astronauts</a> [ Funk, Hip-Hop ]<br />
<strong>Ambiance:</strong> Funk<br />
<strong>Albums:</strong> We Are To Answer<br />
<strong>A écouter:</strong> Tout <img src='http://www.warpdesign.fr/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div style="clear:both;">&nbsp;</div>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.warpdesign.fr/blog/2009/07/22/css-vertical-align/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>jQuery 1.3.1: toujours mieux&#8230;</title>
		<link>http://www.warpdesign.fr/blog/2009/01/28/jquery-131-toujours-mieux/</link>
		<comments>http://www.warpdesign.fr/blog/2009/01/28/jquery-131-toujours-mieux/#comments</comments>
		<pubDate>Wed, 28 Jan 2009 16:16:12 +0000</pubDate>
		<dc:creator>leo</dc:creator>
				<category><![CDATA[Techno]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[dom]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[jquery1.3]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[mootools]]></category>
		<category><![CDATA[nouveautes]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[selector]]></category>
		<category><![CDATA[sizzle]]></category>

		<guid isPermaLink="false">http://www.warpdesign.fr/blog/?p=203</guid>
		<description><![CDATA[jQuery est passé en version 1.3 puis rapidement en version 1.3.1. Cette version apporte le lot habituel de changements (optimisations, nouvelles fonctionnalités, réécritures, etc&#8230;) mais aussi, et surtout, casse la compatibilité avec les versions précédentes. Comme je me suis cassé les dents dessus, sans le savoir, j&#8217;ai pensé qu&#8217;il serait bon de faire un petit [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.warpdesign.fr/blog/images/jquery.png" alt="jquery" style="float: left; margin-right: 10px;"><b>jQuery</b> est passé en version 1.3 puis rapidement en version 1.3.1. Cette version apporte le lot habituel de changements (optimisations, nouvelles fonctionnalités, réécritures, etc&#8230;) mais aussi, et surtout, casse la compatibilité avec les versions précédentes. Comme je me suis cassé les dents dessus, sans le savoir, j&#8217;ai pensé qu&#8217;il serait bon de faire un <b>petit tour de quelques unes des nouveautés et incompatibilités introduites dans cette version</b>&#8230;
</p>
<p><span id="more-203"></span></p>
<p>
<b>Nouveautés</b><br />
Comme à chaque version majeure (et on peut se demander comment ils font), les développeurs de ce framework ont de nouveau augmenté les performances de jQuery:<br />
<img src="http://www.warpdesign.fr/blog/images/jquery_chart.jpg" alt="performances de jquery" style="float:left;margin:16px auto;" /></p>
<ul style="clear:left;">
<li>Réécriture de l&#8217;injection HTML: <b>6x</b> plus rapide!</li>
<li>Utilisation d&#8217;un nouveau sélecteur, <b>plus rapide:</b> <i>sizzle</i></li>
<li>Ajout des live events dans le core de jQuery</li>
<li>Nouvel objet Event</li>
<li>Réécriture de la méthode offset(), beaucoup plus rapide</li>
<li>Et bien plus&#8230;</li>
</ul>
<p><b>Incompatibilités</b><br />
Malheureusement, certaines fonctionnalités dépréciées depuis un moment ont été retirées de cette version. Les modifications à effectuer pour rendre son code compatible sont plutôt mineures, quand on sait où chercher <img src='http://www.warpdesign.fr/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
<br />
<b>1. suppression de @ dans [@attr]</b><br />
Le plus gros changement est la suppression de @. Une sélection comme:</p>
<pre>
<code>$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'input[@name=toto]'</span><span style="color: #66cc66;">&#41;</span>...</code>
</pre>
<p>deviendra:</p>
<pre>
<code>$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'input[name=toto]'</span><span style="color: #66cc66;">&#41;</span>...</code>
</pre>
<p>
<b>2. changements dans la méthode ready()</b><br />
Auparavant la méthode attendait le chargement de toutes les feuilles de styles. Comme ce n&#8217;est plus le cas, tous les fichiers CSS doivent être inclus avant les scripts dans la page.<br />
<br />
<b>3. Ordre des sélecteurs &laquo;&nbsp;a, b, c&nbsp;&raquo;</b><br />
L&#8217;ordre des sélecteurs peut varier. Les navigateurs supportant querySelectorAll (Safari, Firefox 3.1+, Opera 10+, IE8+) retourneront les éléments dans l&#8217;ordre du document alors que les autres navigateurs les retourneront (pour l&#8217;instant) dans l&#8217;ordre spécifié. Dans une prochaine version 1.3.x tous les sélecteurs séparés par des virgules seront retournés dans l&#8217;ordre du document.<br />
Concrètement, cela signifie que dans l&#8217;exemple suivant:<br />
<b>DOM</b></p>
<pre>
<code><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;c&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
	Div c
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span>
&nbsp;
  <span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;b&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
	Div b
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span>
&nbsp;
  <span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;a&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
	Div a
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span></code>
</pre>
<p>
<b>Code</b></p>
<pre>
<code>$<span style="color: #66cc66;">&#40;</span>document<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">ready</span><span style="color: #66cc66;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
    $<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'#a, #b, #c'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">each</span><span style="color: #66cc66;">&#40;</span>
      <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
         <span style="color: #000066;">alert</span><span style="color: #66cc66;">&#40;</span> $<span style="color: #66cc66;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">attr</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'id'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>; 
      <span style="color: #66cc66;">&#125;</span>
   <span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;</code>
</pre>
<p>Les navigateurs supportant querySelectorAll (cf. au dessus), renverront les éléments dans l&#8217;ordre du DOM, à savoir:</p>
<pre>
<code>c b a</code>
</pre>
<p>Alors que les autres renverront les éléments dans l&#8217;ordre spécifié dans le sélecteur, c&#8217;est à dire:</p>
<pre>
<code>a b c</code>
</pre>
<p>Attention à ne pas se baser sur cet ordre donc !<br />
<br />
<b>Nouveautés</b><br />
Cette nouvelle version de jQuery vient comme d&#8217;habitude avec son lot de nouveautés bien pratiques, parmi lesquelles:<br />
<br />
<b>1. nouvelle méthode closest( expr )</b><br />
Cette méthode renvoie le plus proche parent correspondant à l&#8217;expression, l&#8217;élément de départ compris. Exemple:<br />
<br />
<b>DOM</b></p>
<pre>
<code><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div</span></a> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;superParent&quot;</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;main&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
     <span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div&gt;</span></a></span>
        <span style="color: #009900;"><a href="http://december.com/html/4/element/ul.html"><span style="color: #000000; font-weight: bold;">&lt;ul</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;maListe&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
			<span style="color: #009900;"><a href="http://december.com/html/4/element/li.html"><span style="color: #000000; font-weight: bold;">&lt;li</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;15&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
				<span style="color: #009900;"><a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">&lt;a&gt;</span></a></span>clique !<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a&gt;</span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/ul&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span></code>
</pre>
<p>
<b>Code</b></p>
<pre>
<code>$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'a'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">click</span><span style="color: #66cc66;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
  <span style="color: #000066;">alert</span><span style="color: #66cc66;">&#40;</span>$<span style="color: #66cc66;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">closest</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'li'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">attr</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'id'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
  <span style="color: #000066;">alert</span><span style="color: #66cc66;">&#40;</span>$<span style="color: #66cc66;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">closest</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'div.superParent'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">attr</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'id'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;</code>
</pre>
<p>L&#8217;exécution du code ci-dessus donnera le résultat suivant:</p>
<pre>
<code>15
main</code>
</pre>
<p>
<b>2. live events</b><br />
Auparavant, les événements n&#8217;étaient pas mis à jour en temps réel sans passer par un plugin comme <a href="http://docs.jquery.com/Plugins/livequery" target="_blank">livequery</a> et un appel comme celui là:</p>
<pre>
<code>$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'a'</span><span style="color: #66cc66;">&#41;</span> 
    .<span style="color: #006600;">livequery</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'click'</span>, <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>event<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span> 
        <span style="color: #000066;">alert</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'clique !'</span><span style="color: #66cc66;">&#41;</span>; 
        <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span>; 
    <span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;</code>
</pre>
<p>sera tout simplement remplacé par:</p>
<pre>
<code>$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'a'</span><span style="color: #66cc66;">&#41;</span> 
    .<span style="color: #006600;">live</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'click'</span>, <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>event<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span> 
        <span style="color: #000066;">alert</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'clique !'</span><span style="color: #66cc66;">&#41;</span>; 
        <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span>; 
    <span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;</code>
</pre>
<p><b>3. La méthode is() et selecteur not() supportent maintenant des expressions complexes, comme:</b></p>
<pre>
<code>$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'a:not(.selected, .highlighted)'</span><span style="color: #66cc66;">&#41;</span>...</code>
</pre>
<p>
<b>Quelques liens</b><br />
Pour finir, et pour en savoir plus, voici quelques liens sur jQuery:</p>
<ul>
<li>changelog complet: <a target="_blank" href="http://docs.jquery.com/Release:jQuery_1.3" title="changelog jQuery 1.3">changelog jQuery 1.3</a></li>
<li>Introduction à <a target="_blank" href="/blog/2007/06/11/jquery/" title="Introduction à jQuery">jQuery</a></li>
<li>Documentation officielle: <a target="_blank" href="http://docs.jquery.com/" title="Documentation jQuery">docs.jquery.com</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.warpdesign.fr/blog/2009/01/28/jquery-131-toujours-mieux/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

