ciao, ho creato uno script per gestire dei checkbox fatti da me.
l'idea è che per ogni checkbox si debba creare una nuova istanza della classa SISM.checkbox (sism è l'oggetto che contiene tute le mie classi).
nella creazione dell'istanza si passa come argomenti un puntatore all'elemto dom e un eventuale callback facoltativo. inoltre volevo che ci fosse una proprietà che immagazzinasse lo stato del checkbox (ceccato o meno)
questo il codice
Come potete vedere cercavo di modificare la proprietà "state" con this.state = false o true del blocco del click, ma sono reso conto che era una cazzata poiché in questo caso this si riferisce a "target" su cui è chiamata la funzione click.Codice PHP:
checkbox: function(target, callback)
{
// setta le variabili
var image = $(this).find("img");
this.state = false;
checkbox = target.find(":input");
target.click( function(e)
{
if (this.state = true){
// cambia l'immagine del checkbox
image.attr('src', '/images/CheckFalse.png').css({top: "-0.75em", left: "0.75em"});
/*this.state = false;*/ //qui c'è il problema
// se c'è un input checkbox ne cambia lo stato
if (checkbox.length){
checkbox.attr('checked', false);
}
// se c'è un callback lo esegue
if (callback){
callback(false);
}
}
// fa l'opposto del codice di sopra
else {
image.attr('src', '/images/CheckTrue.png').css({left: "1em", top: "-0.15em"});
/*this.state = true;*/
if (checkbox.length){
checkbox.attr('checked', true);
}
if (callback){
callback(true);
}
}
e.stopPropagation();
e.preventDefault();
return false;
});
return this;
}
// esempio di creazione dell'istanza senza callback
var sendMail = SISM.checkbox($("div.checkbox.sendMail"))
La domanda quindi è:
come faccio a modificare this.state?