[Web2.0] Jquery (soluzione finale)

Simone Volpini simonevolpini a yahoo.it
Gio 12 Lug 2007 16:29:01 CEST


Simone Volpini wrote:
> Quando risolvo, riposto il codice.

Eccolo. Sicuramente non è il massimo, ma fa il suo dovere.
Praticamente ho un'immagine linkata all'interno di una cella di una tabella.
Nel momento in cui clicco sull'immagine devo:

- chiamare un file php che cambia lo stato del record
- cambiare l'icona di stato
- cambiare il link

Questo è l'HTML:

<a class="stato" href="filePhpCambioStato.php?opt=disattiva&cat=1
?>"><img src="images/disattiva.gif" /></a>


E questo il javascript:

$("a").cambia_stato();


(function() {

    jQuery.fn.cambia_stato = function() {

        var oLink = this;

        oLink.click(function() {

            // controllo lo stato del record in base al link
            if ($(this).attr("href").lastIndexOf('opt=attiva') != -1) {
		
		// nuova immagine di stato
                pathimg  =
$(this).children("img").attr("src").replace('attiva.gif', 'disattiva.gif');

		// nuovo link
                pathlink = $(this).attr("href").replace('opt=attiva',
'opt=disattiva');

		// cambio di colore della riga della tabella
                $(this.parentNode.parentNode).attr("class","on");

            } else { // disattiva
                pathimg  =
$(this).children("img").attr("src").replace('disattiva.gif', 'attiva.gif');
                pathlink = $(this).attr("href").replace('opt=disattiva',
'opt=attiva');
                $(this.parentNode.parentNode).attr("class","off");
            }

	    // chiamata al file php (quello del link)
            $.ajax({
                type: "GET",
                async: false,
                url: $(this).attr("href")
            });

            $(this).children("img").attr("src", pathimg);
            $(this).attr("href", pathlink);
            return false;
        });
    };

})(jQuery);


Può essere migliorato utilizzando in maniera diversa gli attributi degli
oggetti in gioco. Adesso non volevo stravolgere la struttura html di base.

Ciao,
Simone


Maggiori informazioni sulla lista Web2.0