<?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>Hello World: &#187; jQuery</title>
	<atom:link href="http://razorblade.netsons.org/category/javascript/jquery-javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://razorblade.netsons.org</link>
	<description>Programmazione web e oltre: php5, Zend Framework, jQuery, Actionscript 3.0, Sandy 3D Engine e altro</description>
	<lastBuildDate>Fri, 28 Aug 2009 18:23:41 +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>E&#8217; arrivato CADIE ( Cognitive Autoheuristic Distributed-Intelligence Entity )</title>
		<link>http://razorblade.netsons.org/2009/04/01/e-arrivato-cadie-cognitive-autoheuristic-distributed-intelligence-entity/</link>
		<comments>http://razorblade.netsons.org/2009/04/01/e-arrivato-cadie-cognitive-autoheuristic-distributed-intelligence-entity/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 07:59:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Generale]]></category>
		<category><![CDATA[Social Network]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[CADIE]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Pesce d'aprile]]></category>

		<guid isPermaLink="false">http://razorblade.netsons.org/?p=72</guid>
		<description><![CDATA[<p>Questo post è un po' fuori dagli schemi, volevo solo far notare ai miei visitatori che da Google ci devono tenere davvero molto al 1° Aprile, ecco infatti che oggi viene alla luce la <b><a href="http://www.google.it/intl/it/landing/cadie/index.html">tecnologia CADIE ( Cognitive Autoheuristic Distributed-Intelligence Entity )</a></b>, una sorta di applicazione che scansiona il web per <b><a href="http://cadiesingularity.blogspot.com/">crearsi un blog</a></b>... ehehe bello scherzo... o sarà tutto vero?</p>


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Questo post è un po&#8217; fuori dagli schemi, volevo solo far notare ai miei visitatori che da Google ci devono tenere davvero molto al 1° Aprile, ecco infatti che oggi viene alla luce la <b><a href="http://www.google.it/intl/it/landing/cadie/index.html">tecnologia CADIE ( Cognitive Autoheuristic Distributed-Intelligence Entity )</a></b>, una sorta di applicazione che scansiona il web per <b><a href="http://cadiesingularity.blogspot.com/">crearsi un blog</a></b>&#8230; ehehe bello scherzo&#8230; o sarà tutto vero?</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://razorblade.netsons.org/2009/04/01/e-arrivato-cadie-cognitive-autoheuristic-distributed-intelligence-entity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Menu a tendina multilivello crossbrowser con jQuery e Css</title>
		<link>http://razorblade.netsons.org/2008/10/04/menu-a-tendina-multilivello-crossbrowser-con-jquery-e-css/</link>
		<comments>http://razorblade.netsons.org/2008/10/04/menu-a-tendina-multilivello-crossbrowser-con-jquery-e-css/#comments</comments>
		<pubDate>Sat, 04 Oct 2008 04:21:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cascade Style Sheet]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[drop down menu]]></category>
		<category><![CDATA[menu a tendina]]></category>

		<guid isPermaLink="false">http://razorblade.netsons.org/?p=40</guid>
		<description><![CDATA[<h2>Crossbrowser Multi Level Drop Down Menu Con jQuery e Css</h2>
<p>I menu a tendina sono molto utilizzati nelle applicazioni web, e molto spesso per crearli si ricorre a chilometri di codice javascript, scelta che potrebbe comportare diverse problematiche a livello di portabilità, accessibilità, efficienza ecc... Non è il caso del menù che andremo a vedere tra poco, interamente realizzato dal sottoscritto, creato quasi completamente utilizzando 'semplice' codice css con un pizzico di jQuery. Prima di buttarmi in questo lavoro ho effettuato diverse ricerche per vedere se ciò di cui avevo bisogno fosse già stato creato da qualcuno, ed in effetti, in molti hanno già creato cose abbastanza simili. Ciò che mi ha fatto decidere di creare qualcosa ex novo è stata <a href="http://razorblade.netsons.org/2008/10/04/menu-a-tendina-multilivello-crossbrowser-con-jquery-e-css/">[...] Continua</a></p>


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<h2>Crossbrowser Multi Level Drop Down Menu Con jQuery e Css</h2>
<p>I menu a tendina sono molto utilizzati nelle applicazioni web, e molto spesso per crearli si ricorre a chilometri di codice javascript, scelta che potrebbe comportare diverse problematiche a livello di portabilità, accessibilità, efficienza ecc&#8230; Non è il caso del menù che andremo a vedere tra poco, interamente realizzato dal sottoscritto, creato quasi completamente utilizzando &#8217;semplice&#8217; codice css con un pizzico di jQuery. Prima di buttarmi in questo lavoro ho effettuato diverse ricerche per vedere se ciò di cui avevo bisogno fosse già stato creato da qualcuno, ed in effetti, in molti hanno già creato cose abbastanza simili. Ciò che mi ha fatto decidere di creare qualcosa ex novo è stata la difficoltà di riadattare il codice altrui alle mie esigenze, e spero che con le spiegazioni che darò qui di seguito nessuno vada incontro alle medesime problematiche.</p>
<p>Ecco subito un <a href="http://razorblade.netsons.org/javascript/DropDownMenu/index.html">esempio</a> di cosa andremo ad ottenere e qui di seguito il codice:</p>
<p><b>index.html</b></p>
<pre name="code" class="php">
  &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
  &lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it"&gt;
    &lt;head&gt;
      &lt;link rel="stylesheet" type="text/css" media="screen" href="./styles/style.css" /&gt;
      &lt;script type="text/javascript" src="./js/jquery.js"&gt;&lt;/script&gt;
      &lt;script type="text/javascript" src="./js/menu.js"&gt;&lt;/script&gt;
      &lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /&gt;
      &lt;title&gt;Drop Down Menu&lt;/title&gt;
    &lt;/head&gt;
  &lt;body&gt;

  &lt;div id="navigator"&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;p&gt;&lt;a&gt;Voce 1&lt;/a&gt;&lt;/p&gt;
        &lt;ul&gt;
          &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1&lt;/a&gt;&lt;/p&gt;
            &lt;ul&gt;
              &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-1&lt;/a&gt;&lt;/p&gt;
                &lt;ul&gt;
                  &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-1-1&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                  &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-1-2sssssss sssssssss ssssss&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                  &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-1-3&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                  &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-1-4&lt;/a&gt;&lt;/p&gt;
                    &lt;ul&gt;
                      &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-1-4-1&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                      &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-1-4-2&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                      &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-1-4-3&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                      &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-1-4-4&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                      &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-1-4-5&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                      &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-1-4-6&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                    &lt;/ul&gt;
                  &lt;/li&gt;
                  &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-1-5&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                  &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-1-6&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                &lt;/ul&gt;
              &lt;/li&gt;
              &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-2&lt;/a&gt;&lt;/p&gt;
                &lt;ul&gt;
                  &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-2-1&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                  &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-2-2&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                  &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-2-3&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                  &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-2-4&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                  &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-2-5&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                  &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-2-6&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                  &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-2-7&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
                &lt;/ul&gt;
              &lt;/li&gt;
              &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-1-3&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
          &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 1-2&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;&lt;p&gt;&lt;a&gt;Voce 2&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
      &lt;li&gt;&lt;p&gt;&lt;a&gt;Voce 3&lt;/a&gt;&lt;/p&gt;
        &lt;ul&gt;
          &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 3-1&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
          &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 3-2&lt;/a&gt;&lt;/p&gt;
            &lt;ul&gt;
              &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 3-2-1&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
              &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 3-2-2&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
              &lt;li&gt;&lt;p&gt;&lt;a&gt;Sub Voce 3-2-3&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;&lt;p&gt;&lt;a&gt;Voce 4&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
      &lt;li&gt;&lt;p&gt;&lt;a&gt;Voce 5&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
      &lt;li&gt;&lt;p&gt;&lt;a&gt;Voce 6&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/div&gt;

  &lt;/body&gt;
  &lt;/html&gt;
</pre>
<p><b>style/style.css</b></p>
<pre name="code" class="php">
	html, body, div, span, applet, object, iframe,
	h1, h2, h3, h4, h5, h6, p, blockquote, pre,
	a, abbr, acronym, address, big, cite, code,
	del, dfn, em, font, img, ins, kbd, q, s, samp,
	small, strike, strong, sub, sup, tt, var,
	b, u, i, center,
	dl, dt, dd, ol, ul, li,
	fieldset, form, label, legend,
	table, caption, tbody, tfoot, thead, tr, th, td {
		margin: 0;
		padding: 0;
		border: 0;
		outline: 0;
		font-size: 100%;
		vertical-align: baseline;
		background: transparent;
	}

	body {
		line-height: 1;
	}

	ol, ul {
		list-style: none;
	}

	blockquote, q {
		quotes: none;
	}

	blockquote:before, blockquote:after,
	q:before, q:after {
		content: '';
		content: none;
	}

	/* remember to define focus styles! */
	:focus {
		outline: 0;
	}

	/* remember to highlight inserts somehow! */
	ins {
		text-decoration: none;
	}

	del {
		text-decoration: line-through;
	}

	/* tables still need 'cellspacing="0"' in the markup */
	table {
		border-collapse: collapse;
		border-spacing: 0;
	}

	span {
		display: none;
	}

	#navigator {
		width: 990px;
		height: 21px;
		background-color: rgb(250,211,211);
	}

	#navigator ul {
		list-style-type:none;
		border: 0px solid #000000;
		position: absolute;
		z-index: 90;
	}

	#navigator ul li {
		width: 130px;
		float: left;
		border: 1px solid black;
		text-align: center;
		font-size: 11px;
		font-weight: bold;
		display: block;
	}

	#navigator ul li ul {
		display: none;
		visibility: hidden;
		width: 130px;
		border: 0px;
		border-left: 1px solid black;
		border-right: 1px solid black;
		background-color: #ffffff;
		margin: 1px 0px 0px -1px;
	}

	* html #navigator ul li ul {
		margin: 0px;
		background-color: #fff000;
		margin: 1px 0px 0px -66px;
	}

	#navigator ul li ul li {
		border: 0px solid black;
		border-bottom: 1px solid black;
		width: 130px;
	}

	#navigator ul ul ul {
		border: 0px solid black;
		border-top: 1px solid black;
		border-left: 1px solid black;
		border-right: 1px solid black;
		float: left;
		width: 130px;
		margin: -18px 0px 0px 130px;
		height: auto;
	}

	* html #navigator ul ul ul {
		margin: 0px;
		margin: -18px 0px 0px 65px;
	}

	#navigator ul li p {
		margin: 0px;
		padding: 3px 0px 3px 0px;
		color: #000000;
		width: 100%;
		height: 100%;
		background-color: #ff0000;
	}

	#navigator ul li p a {
		color: #000000;
		background-color: #00ff00;
	}
</pre>
<p><b>js/menu.js</b></p>
<pre name="code" class="php">

  $(document).ready(function(){
    $("#navigator li").hover(
      function(){
        $(this).children('ul:first:hidden').css({visibility: "visible",display:'block'});
      },
      function(){
        $(this).children('ul:first:visible').css({visibility: "hidden",display:'none'});
      }
    );
  });
</pre>
</p>
<p>Ricordatevi inoltre di includere correttamente la libreria jQuery.</p>
<p>Il file html non ha bisogno di spiegazioni, un semplice div che contiene un ul con degli li che a loro volta possono contenere altri ul ecc..</p>
<p>Il file menu.js utilizza il metodo <b>hover</b> di jQuery, che in pratica, mette in ascolto gli oggetti LI presenti all&#8217;interno del DIV#navigator con i metodi onmouseover e onmouseout.</p>
<p>Il file style.css è quello che andremo a dissezionare, vedendo passo passo i comportamenti che prende il nostro menu al variare del suo contenuto. Procederemo quindi in vari step che ci porteranno alla versione finale. Il codice in testa al file è parte del <a href="http://razorblade.netsons.org/2008/10/04/cascade-style-sheet-reset/">Meyerweb Reset</a> che personalmente includo in ogni progetto.</p>
<h2>Step 1</h2>
<p>Il primo passo è semplice&#8230; eliminate il contenuto che segue alla definizione degli attributi per il div#navigator, otterrete <a href="http://razorblade.netsons.org/javascript/DropDownMenu/step1.html">questo risultato</a>. Il contenuto degli ul li è subito visibile ed ogni elemento è a capo dell&#8217;altro. I file html e js sono rimasti invariati, infatti passando con il mouse sugli elementi LI potremo visualizzare/nascondere eventuali ul figli se disponibili.</p>
<h2>Step 2</h2>
<p>Non seguiremo l&#8217;ordine del codice come impostato nel file css nei vari step, infatti il file css di questo secondo passaggio sarà la versione dello step 1 con aggiunta delle definizioni di &#8216;#navigator ul li p&#8217; e &#8216;#navigator ul li p a&#8217;. <a href="http://razorblade.netsons.org/javascript/DropDownMenu/step2.html">Cliccate qui</a> per vedere il risultato e controllare se state eseguendo tutto correttamente. Abbiamo formattato i tag P ed A presenti all&#8217;interno degli LI. Perchè tag P? La versione fnale del menu senza la presenza dei tag P aveva un fastidioso difetto di <b>sovrapposizione degli UL</b>. Più nel dettaglio, la coordinata X dell&#8217;UL era uguale alla coordinata X del testo presente nell&#8217;LI parente sommata della sua lunghezza ( l&#8217;UL compariva subito dopo la fine del testo e non alla fine dell&#8217;LI, donando un effetto di disordine ).</p>
<h2>Step 3</h2>
<p>In questo passaggio le cose iniziano a prendere forma. Aggiungiamo le definizioni per &#8216;#navigator ul&#8217; e &#8216;#navigator ul li&#8217; ovvero l&#8217;UL che conterrà gli LI che rappresenteranno le <b>categorie</b>. Scrivo &#8216;rappresenteranno&#8217; in quanto adesso la definizione prende tutti gli UL e gli LI discendenti del div#navigator. Ciò che abbiamo ottenuto è che adesso, le sottocategorie compaiono al di sotto della categoria a cui appartengono. Questo <a href="http://razorblade.netsons.org/javascript/DropDownMenu/step3.html">step 3</a> sarà visualizzato in maniera abbastanza differente dai vari browser ( leggi: su IE6 viene interpretato in modo differente che dagli altri browser ). Da sottolineare la presenza dell&#8217;attributo <b>position: absolute;</b> che permette la visualizzazione degli UL come se fossero al di fuori di qualsiasi altro elemento ( modificare questa voce con relative o rimuoverla per capire di cosa sto parlando ). </p>
<h2>Step 4</h2>
<p>Aggiungiamo le definizioni di &#8216;#navigator ul li ul&#8217;, &#8216;#navigator ul li ul li&#8217; e &#8216;* html #navigator ul li ul&#8217;. In questo modo differenziamo la visualizzazione delle categorie di primo livello ( lo abbiamo fatto nello step 3 ) dalle sottocategorie ( a qualsiasi livello ). Inoltre definiamo che le sottocategorie di default NON debbano visualizzarsi. Della loro visualizzazione se ne occupera il file js ( che cerca il primo figlio UL nascosto dell&#8217;LI scatenante l&#8217;evento mouseover e lo visualizza ). <a href="http://razorblade.netsons.org/javascript/DropDownMenu/step4.html">Ciò che otteniamo</a> è la corretta visualizzazione delle categorie di primo livello. <b>Da notare che un selettore preceduto dal suffisso &#8216;* html&#8217; viene letto esclusivamente da IE6, quindi le proprietà al suo interno sono specifiche per far funzionare il tutto anche su questo browser</b>.</p>
<h2>Final Step</h2>
<p>Infine aggiungiamo le regole &#8216;#navigator ul ul ul&#8217; e &#8216;* html #navigator ul ul ul&#8217; che definiscono la visualizzazione per le categorie dal terzo livello in poi. Otteniamo quindi il <a href="http://razorblade.netsons.org/javascript/DropDownMenu/index.html">risultato finale</a>.</p>
<h2>Riadattare il tutto</h2>
<p>Ciò a cui bisogna porre attenzione modificando il css di questo menù sono principalmente la <b>larghezza degli li/ul</b> e la loro altezza, data principalmente dalla proprietà padding del tag P. Inoltre, la presenza del bordo di 1px è da tenere in considerazione in quanto la sua rimozione/modifica comporterebbe la modifica di altre proprietà per fare in modo che tutto si riadatti. Rispettando l&#8217;equilibrio tra le varie proprietà non dovrebbe essere eccessivamente un problema riadattare il tutto alle proprie esigenze.</p>
<p>Si conclude qui questo tutorial. Eventuali commenti per richieste o consigli su come modificare in meglio il codice sono sempre ben accetti.</p>
<div class="ratings">Note: There is a rating embedded within this post, please visit this post to rate it.</div>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://razorblade.netsons.org/2008/10/04/menu-a-tendina-multilivello-crossbrowser-con-jquery-e-css/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Introduzione a JQuery</title>
		<link>http://razorblade.netsons.org/2008/10/03/introduzione-a-jquery/</link>
		<comments>http://razorblade.netsons.org/2008/10/03/introduzione-a-jquery/#comments</comments>
		<pubDate>Fri, 03 Oct 2008 05:50:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[John Resig]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://razorblade.netsons.org/?p=9</guid>
		<description><![CDATA[<h2>Il Framework jQuery</h2>
<p>JQuery è un framework javascript che semplifica, e anche di molto, il lavoro per tutti quelli che hanno a che fare con il suddetto linguaggio.  JQuery è inizialmente scritto da John Resig, a cui si sono unite altre persone creando un vero e proprio team. Diversi grandi nomi utilizzano questo framework nei loro siti internet, tra cui Google, Mozilla.org, Technorati ed altri che potete vedere sul sito di <a href="http://jquery.com/">JQuery</a>, dove tra l'altro, potete anche scaricarlo a scelta tra la versione compressa per produzione e non.</p>

<p>Ma cosa ci permette di fare questo framework?<a href="http://razorblade.netsons.org/2008/10/03/introduzione-a-jquery/">[...] Continua</a></p>


Related posts:<ol><li><a href='http://razorblade.netsons.org/2009/03/18/introduzione-a-ext-js-javascript-framework/' rel='bookmark' title='Permanent Link: Introduzione a EXT JS Javascript Framework'>Introduzione a EXT JS Javascript Framework</a> <small>Ext: Non l'ennesima libreria javascript Oggi introdurremo la libreria EXT...</small></li></ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<h2>Il Framework jQuery</h2>
<p>JQuery è un framework javascript che semplifica, e anche di molto, il lavoro per tutti quelli che hanno a che fare con il suddetto linguaggio.  JQuery è inizialmente scritto da John Resig, a cui si sono unite altre persone creando un vero e proprio team. Diversi grandi nomi utilizzano questo framework nei loro siti internet, tra cui Google, Mozilla.org, Technorati ed altri che potete vedere sul sito di <a href="http://jquery.com/">JQuery</a>, dove tra l&#8217;altro, potete anche scaricarlo a scelta tra la versione compressa per produzione e non.</p>
<p>Ma cosa ci permette di fare questo framework? Niente altro che tutto quello che ci permette di fare javascript, ma in maniera estremamente più semplice e veloce. Prima di scendere nel dettaglio con qualche codice di esempio, vediamo come inizializzare JQuery. Il mio consiglio è quello creare un file esterno ed includerlo nelle pagine subito dopo aver incluso il file principale della libreria:</p>
<p>prova.html</p>
<pre name="code" class="php">
  &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
  &lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it"&gt;
    &lt;head&gt;
      &lt;link rel="stylesheet" type="text/css" media="screen" href="./styles/style.css" /&gt;
      &lt;script type="text/javascript" src="./js/jquery.js"&gt;&lt;/script&gt;
      &lt;script type="text/javascript" src="./js/myJQueryStuff.js"&gt;&lt;/script&gt;
      &lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /&gt;
      &lt;title&gt;JQuery Test Application&lt;/title&gt;
    &lt;/head&gt;
  &lt;body&gt;
  [...]
</pre>
<p>myJQueryStuff.js</p>
<pre name="code" class="php">
$(document).ready(function(){

// codice javascript/jquery

});
</pre>
<p>Tutto qui. Da questo momento in poi potrete usufruire di tutte le caratteristiche della libreria, come per esempio:</p>
<h2>Selettori</h2>
<p>Tramite la chiamata della funzione $, è possibile selezionare praticamente qualsiasi oggetto html in qualsiasi maniera si voglia. La sintassi dei selettori è molto simile ai selettori css, quindi per esempio, se volessimo selezionare il &lt;div id=&#8221;container&#8221;&gt; del nostro documento html, il codice sarebbe:</p>
<p>Selezione del div #container</p>
<pre name="code" class="php">
 var container = $('#container');
</pre>
<p>Alla stessa maniera è quindi possibile selezionare uno o più oggetti per classe, tagName, per via gerarchica utilizzando il simbolo &gt;</p>
<p>Selezione degli ul &#8216;figli&#8217; del div #container</p>
<pre name="code" class="php">
 var container = $('#container > ul');
</pre>
<p>e molti altri ancora. Esistono inoltre una grande quantità di filtri, raggruppati per filtri base, filtri di contenuto, visibilità, attributo, per i figli, per i forms ecc.. potete trovare tutto spiegato in maniera dettagliata con la spiegazione dei vari valori ritornati <a href="http://docs.jquery.com/Selectors">cliccando qui</a>.</p>
<h2>Ajax</h2>
<p>JQuery semplifica radicalmente la creazione delle richieste asincrone. Non dovremo più preoccuparci delle problematiche crossbrowser di creazione dell&#8217;oggetto XMLHttpRequest, JQuery ci pensa per noi, di seguito un esempio dello script da utilizzare:</p>
<p>richiesta Ajax con JQuery</p>
<pre name="code" class="php">
      $.ajax({
        url: './myServerScript.php',
        type: 'GET',
        data: 'myVar='+myVar,
        success:  function(html){
        }
      });
</pre>
<p>Questo è solo un esempio di come poter effettuare una richiesta di tipo GET al file myServerScript.php. Eventuali dati ritornti dalla richiesta saranno contenuti nella variabile html. Sono inoltre disponibili le chiamate POST e JSON. E&#8217; possibile inoltre specificare diverse altre proprietà per efttuare la chiamata ajax, per approfondimenti vi rimando a <a href="http://docs.jquery.com/Ajax">questo link</a>.</p>
<h2>Eventi</h2>
<p>Molto intuitiva anche la gestione degli eventi, con cui è possibile aggiungere o rimuovere un oggetto dall&#8217;ascolto di un determinato evento. Esiste inoltre la possibilità di scatenare un certo evento mediante il metodo trigger. Di seguito un esempio che mette in ascolto un elemento all&#8217;evento click:</p>
<p>esempio evento click</p>
<pre name="code" class="php">
  $('myButton').bind('click',function(){
    alert('hai cliccato myButton!');
  });
</pre>
<p>Per tutti i dettagli sulla gestione degli eventi <a href="http://docs.jquery.com/Events">cliccate qui</a>.</p>
<h2>Effetti</h2>
<p>Ovviamente non poteva mancare una gestione degli effetti, come animazioni, comparsa/scomparsa, slide ecc.. Ecco un esempio:</p>
<p>Effetto slide su un div</p>
<pre name="code" class="php">
    $("button").click(function () {
      $("div.slide").slideToggle("slow");
    });
</pre>
<p>Potete trovare tutta la documentazione con esempi pronti <a href="http://docs.jquery.com/Effects">qui</a>.</p>
<p>Su jQuery c&#8217;è moltissimo da scrivere, questo tutorial aveva il semplice scopo di introdurre le funzionalità base del framework, ritorneremo presto sull&#8217;argomento con interessanti script pronti all&#8217;uso. Nel mentre, ecco alcuni link estremamente interessanti di alcuni utilissimi plugin che estendono le già non poche funzionalità:</p>
<ul class='listato'>
<li><a href="http://malsup.com/jquery/">http://malsup.com/jquery/</a></li>
<li><a href="http://leandrovieira.com/projects/jquery/lightbox/">http://leandrovieira.com/projects/jquery/lightbox/</a></li>
<li><a href="http://www.fyneworks.com/jquery/multiple-file-upload/">http://www.fyneworks.com/jquery/multiple-file-upload/</a></li>
<li><a href="http://jamal-mvc.com/browser/code/trunk/build/demo/js/plugins/jquery.timers.js?rev=55">http://jamal-mvc.com/browser/code/trunk/build/demo/js/plugins/jquery.timers.js?rev=55</a></li>
</ul>
<div class="ratings">Note: There is a rating embedded within this post, please visit this post to rate it.</div>


<p>Related posts:<ol><li><a href='http://razorblade.netsons.org/2009/03/18/introduzione-a-ext-js-javascript-framework/' rel='bookmark' title='Permanent Link: Introduzione a EXT JS Javascript Framework'>Introduzione a EXT JS Javascript Framework</a> <small>Ext: Non l'ennesima libreria javascript Oggi introdurremo la libreria EXT...</small></li></ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://razorblade.netsons.org/2008/10/03/introduzione-a-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
