<?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>Simone Volpini &#187; Jquery</title>
	<atom:link href="http://www.simonevolpini.info/blog/category/jquery/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.simonevolpini.info/blog</link>
	<description>Consulenza, progettazione e realizzazione siti web</description>
	<lastBuildDate>Tue, 27 Dec 2011 09:03:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>jQuery e bug nella funzione position()</title>
		<link>http://www.simonevolpini.info/blog/2009/11/02/jquery-e-bug-nella-funzione-position/</link>
		<comments>http://www.simonevolpini.info/blog/2009/11/02/jquery-e-bug-nella-funzione-position/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 07:49:03 +0000</pubDate>
		<dc:creator>Simone</dc:creator>
				<category><![CDATA[Jquery]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[position]]></category>

		<guid isPermaLink="false">http://www.simonevolpini.info/blog/?p=189</guid>
		<description><![CDATA[In uno dei miei ultimi lavori, ho riscontrato un bug con l&#8217;utilizzo del framework jQuery, nella realizzazione di una galleria fotografica con effetto di scorrimento delle foto (slideshow photo gallery). Ho perso diverse ore prima di capire che l&#8217;errore era dato dalla funzione jQuery position(), perché si verifica solo in determinate condizioni, ancora non del [...]<p><a href="http://www.simonevolpini.info/blog/2009/11/02/jquery-e-bug-nella-funzione-position/">jQuery e bug nella funzione position()</a> is a post from: <a href="http://www.simonevolpini.info/blog">Simone Volpini</a></p>
]]></description>
			<content:encoded><![CDATA[<p>In uno dei miei ultimi lavori, ho riscontrato un bug con l&#8217;utilizzo del <a href="http://jquery.com/">framework jQuery</a>, nella realizzazione di una galleria fotografica con effetto di scorrimento delle foto (<a href="http://www.battistelliroccheggianiarchitetti.it/index.php?page=231&amp;pageID=1">slideshow photo gallery</a>).<br />
Ho perso diverse ore prima di capire che l&#8217;errore era dato dalla funzione <a href="http://docs.jquery.com/CSS/position">jQuery position()</a>, perché si verifica solo in determinate condizioni, ancora non del tutto chiare (forse dovute anche alla struttura della pagina HTML).</p>
<p>Il problema si presenta, come solito, con l&#8217;accoppiata Windows/Internet Explorer e più precisamente:<br />
- in Windows Vista con IE7 e IE8<br />
- in Windows XP con IE7</p>
<p>Stranamente Internet Explorer 6 ne è esente ed anche IE8 sotto windows XP.</p>
<p>In breve, la funzione <a href="http://docs.jquery.com/CSS/position">jQuery position()</a> applicata ad un DIV a cui è associato uno stile inline del tipo style=&#8221;left: -200px&#8221;, invece di restituire -200 pixel, da -199 pixel. 1 pixel di differenza. Questo pixel, nel mio caso, compromette lo slide delle foto.</p>
<p>Solo dopo vari tentativi ho capito che l&#8217;errore era dato dalla funzione e l&#8217;ho aggirato utilizzando le funzioni standard di javascript:</p>
<pre>// Soluzione con jQuery, ma con bug
var position = $("#Div").position();
vat x = position.left;
// x errato</pre>
<pre>// Soluzione standard, esente dal bug
var x = document.getElementById('Div').style.left;</pre>
<p><a href="http://www.simonevolpini.info/blog/2009/11/02/jquery-e-bug-nella-funzione-position/">jQuery e bug nella funzione position()</a> is a post from: <a href="http://www.simonevolpini.info/blog">Simone Volpini</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonevolpini.info/blog/2009/11/02/jquery-e-bug-nella-funzione-position/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery: seleziona tutto (e deseleziona)</title>
		<link>http://www.simonevolpini.info/blog/2007/10/14/jquery-seleziona-tutto-e-deseleziona/</link>
		<comments>http://www.simonevolpini.info/blog/2007/10/14/jquery-seleziona-tutto-e-deseleziona/#comments</comments>
		<pubDate>Sun, 14 Oct 2007 10:56:29 +0000</pubDate>
		<dc:creator>Simone</dc:creator>
				<category><![CDATA[Jquery]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[XHTML/HTML]]></category>

		<guid isPermaLink="false">http://www.simonevolpini.info/blog/2007/10/14/jquery-seleziona-tutto-e-deseleziona/</guid>
		<description><![CDATA[Spesse volte capita di realizzare delle form contenenti una serie di checkbox (per esempio un elenco delle nazioni), dove l&#8217;utente può selezionarne più d&#8217;una. Se l&#8217;elenco è molto lungo e l&#8217;utente ha necessità di selezionarle anche tutte, di solito si inseriscono un paio di pulsanti che permettono di fare una seleziona/deselezione di massa. Con jQuery [...]<p><a href="http://www.simonevolpini.info/blog/2007/10/14/jquery-seleziona-tutto-e-deseleziona/">jQuery: seleziona tutto (e deseleziona)</a> is a post from: <a href="http://www.simonevolpini.info/blog">Simone Volpini</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Spesse volte capita di realizzare delle form contenenti una <strong>serie di checkbox</strong> (per esempio un elenco delle nazioni), dove l&#8217;utente può <strong>selezionarne più d&#8217;una</strong>. Se l&#8217;elenco è molto lungo e l&#8217;utente ha necessità di selezionarle anche tutte, di solito si inseriscono un paio di pulsanti che permettono di fare una seleziona/deselezione di massa.</p>
<p><strong>Con <a href="http://www.jquery.com">jQuery</a></strong> è molto semplice e <strong>basta una riga di codice</strong>.</p>
<p>Intanto costruiamo l&#8217;html:</p>
<p><code><br />
&lt;a href="javascript:selectAll()"&gt;seleziona tutto&lt;/a&gt; | &lt;a href="javascript:deselectAll()"&gt;Deseleziona tutto&lt;/a&gt;<br />
&lt;div id="cont_nazioni"&gt;<br />
&lt;input type="checkbox" name="nazioni[]" value="IT"&gt;Italia&lt;br /&gt;<br />
&lt;input type="checkbox" name="nazioni[]" value="FR"&gt;Francia&lt;br /&gt;<br />
....<br />
&lt;input type="checkbox" name="nazioni[]" value="DE"&gt;Germania&lt;br /&gt;<br />
&lt;input type="checkbox" name="nazioni[]" value="ES"&gt;Spagna&lt;br /&gt;<br />
&lt;/div&gt;<br />
</code></p>
<p>E poi le due funzioni Javascript per eseguire la selezione e la deselezione:</p>
<p><code><br />
&lt;script type="text/javascript"&gt;<br />
function <strong>selectAll</strong>() {<br />
$("#cont_nazioni :checkbox").attr({ checked: "checked"});<br />
}</code></p>
<p>function <strong>deselectAll</strong>() {<br />
$(&#8220;#cont_nazioni :checkbox&#8221;).removeAttr(&#8220;checked&#8221;);<br />
}<br />
&lt;/script&gt;</p>
<p>Ovviamente per far funzionare il tutto ricordate di includere anche la classe <a href="http://www.jquery.com">jQuery</a>.</p>
<p><a href="http://www.simonevolpini.info/blog/2007/10/14/jquery-seleziona-tutto-e-deseleziona/">jQuery: seleziona tutto (e deseleziona)</a> is a post from: <a href="http://www.simonevolpini.info/blog">Simone Volpini</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonevolpini.info/blog/2007/10/14/jquery-seleziona-tutto-e-deseleziona/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Menù a tendina orizzontale e jQuery</title>
		<link>http://www.simonevolpini.info/blog/2007/08/08/menu-a-tendina-orizzontale-e-jquery/</link>
		<comments>http://www.simonevolpini.info/blog/2007/08/08/menu-a-tendina-orizzontale-e-jquery/#comments</comments>
		<pubDate>Wed, 08 Aug 2007 21:29:41 +0000</pubDate>
		<dc:creator>Simone</dc:creator>
				<category><![CDATA[Jquery]]></category>
		<category><![CDATA[Varie]]></category>

		<guid isPermaLink="false">http://www.simonevolpini.info/blog/2007/08/08/menu-a-tendina-orizzontale-e-jquery/</guid>
		<description><![CDATA[Come promesso nell&#8217;ultimo post (ormai datato), oggi pubblico una versione modificata del menù proposto da Gianluca Troiani nel suo libro: ho praticamente sostituito lo script javascript che controlla l&#8217;apertura e chiusura delle tendine con una versione realizzata con jQuery. Lo script può essere applicato sia alla versione con menù orizzontale, che per quella in verticale [...]<p><a href="http://www.simonevolpini.info/blog/2007/08/08/menu-a-tendina-orizzontale-e-jquery/">Menù a tendina orizzontale e jQuery</a> is a post from: <a href="http://www.simonevolpini.info/blog">Simone Volpini</a></p>
]]></description>
			<content:encoded><![CDATA[<p><a title="Logo jQuery" href="http://www.simonevolpini.info/blog/wp-content/uploads/2007/08/jquery_logo.gif"><img src="http://www.simonevolpini.info/blog/wp-content/uploads/2007/08/jquery_logo.gif" alt="Logo jQuery" /></a></p>
<p>Come promesso nell&#8217;<a href="http://www.simonevolpini.info/blog/2007/07/18/css-non-si-finisce-mai-di-imparare/">ultimo post</a> (ormai datato), oggi pubblico una versione modificata del menù proposto da <a href="http://www.constile.org">Gianluca Troiani</a> nel suo libro: ho praticamente sostituito lo script javascript che controlla l&#8217;apertura e chiusura delle tendine con una versione realizzata con <strong><a href="http://www.jquery.com">jQuery</a></strong>.<br />
Lo script può essere applicato sia alla versione con menù orizzontale, che per quella in verticale che ho modificato nel post precedente.</p>
<p>Il css e l&#8217;html della pagina è identico alla versione originale, ho solo aggiunto il seguente codice nel tag :</p>
<blockquote><p>&lt;script type=&#8221;text/javascript&#8221; src=&#8221;scripts/jquery.js&#8221;&gt;&lt;/script&gt;<br />
&lt;script type=&#8221;text/javascript&#8221; src=&#8221;scripts/jquery.onfocus.js&#8221;&gt;&lt;/script&gt;<br />
&lt;script type=&#8221;text/javascript&#8221;&gt;<br />
$(document).ready(function(){<br />
$(&#8216;#menuNavigazione&#8217;).onfocus();<br />
});<br />
&lt;/script&gt;</p></blockquote>
<p>che si occupa di caricare la libreria <strong>jQuery</strong> e <strong>jquery.onfocus.js</strong> che ho sviluppato per gestire l&#8217;apertura/chiusura del menù.<br />
Il javascript <em>$(&#8216;#menuNavigazione&#8217;).onfocus()</em> si occupa di assegnare alla lista (ul) con id <strong>menuNavigazione</strong> la funzione <em>onfocus</em>.</p>
<p>La funzione onfocus è la seguente:</p>
<blockquote><p>(function() {<br />
$.fn.onfocus = function(){</p>
<p>$(this).find(&#8220;ul&#8221;).removeClass().addClass(&#8220;subMenu-off&#8221;);</p>
<p>$(this).find(&#8220;li&#8221;).focus = $(this).find(&#8220;li&#8221;).mouseover(function() {<br />
$(this).children(&#8220;ul&#8221;).removeClass().addClass(&#8220;subMenu-on&#8221;);<br />
});<br />
$(this).find(&#8220;li&#8221;).mouseout(function() {<br />
$(this).children(&#8220;ul&#8221;).removeClass().addClass(&#8220;subMenu-off&#8221;);<br />
});<br />
};<br />
})(jQuery);</p></blockquote>
<p><strong>Passo 1</strong>:<br />
<em>$(this).find(&#8220;ul&#8221;).removeClass().addClass(&#8220;subMenu-off&#8221;);</em></p>
<p>associa a tutte le sottoliste dell&#8217;oggetto <strong>this</strong> lo stile <em>subMenu-off</em> per nascondere i sottomenù; questa procedura è migliore rispetto a quella proposta da Gianluca, perché jQuery esegue il javascript mentre la pagina si sta caricando, mentre l&#8217;altra versione attende che venga completato il caricamento di tutto l&#8217;HTML. In questo modo si evita uno sfarfallio iniziale dei sottomenù che ho notato in firefox sotto linux o su PC più datati.</p>
<p><strong>Passo 2</strong>:<br />
<em>$(this).find(&#8220;li&#8221;).focus = $(this).find(&#8220;li&#8221;).mouseover(function() {<br />
$(this).children(&#8220;ul&#8221;).removeClass().addClass(&#8220;subMenu-on&#8221;);<br />
});</em></p>
<p>se si passa con il mouse (o al focus) sopra un tag <strong>li</strong> della lista rimuove lo stile <em>subMenu-off</em> e aggiunge <em>subMenu-on</em> ai tag <strong>ul</strong> presenti all&#8217;interno di <strong>li</strong>.</p>
<p>Passo 3:<br />
<em>$(this).find(&#8220;li&#8221;).mouseout(function() {<br />
$(this).children(&#8220;ul&#8221;).removeClass().addClass(&#8220;subMenu-off&#8221;);<br />
});</em></p>
<p>esegue l&#8217;operazione opposta del passo 2: quando si verifica l&#8217;evento <em>mouseout</em>, riassegna ai tag <strong>ul</strong> presenti all&#8217;interno di <strong>li</strong> la classe <em>subMenu-off</em>.</p>
<p>In <a title="jquery_menu_orizzontale.zip" href="http://www.simonevolpini.info/blog/wp-content/uploads/2007/08/jquery_menu_orizzontale.zip">jquery_menu_orizzontale.zip</a> l&#8217;esempio completo.</p>
<p><a href="http://www.simonevolpini.info/blog/2007/08/08/menu-a-tendina-orizzontale-e-jquery/">Menù a tendina orizzontale e jQuery</a> is a post from: <a href="http://www.simonevolpini.info/blog">Simone Volpini</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonevolpini.info/blog/2007/08/08/menu-a-tendina-orizzontale-e-jquery/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>

