Jquery Widget richiamata. Ottenere una funzione al fuoco
-
14-10-2019 - |
Domanda
Ho aggiunto una funzione di callback per un jquery widget di. Sarà dati di output nella console, ma come faccio a farlo applicare qualcosa ai dati nella pagina?
Esempio ...
nelle mie opzioni del widget ho fatto la seguente disposizione per ricevere l'input:
complete : ''
e hanno aggiunto un metodo al widget così:
_complete : function(data) {
if(this.options.complete) {
console.log(data);
}
}
In un altro metodo del widget faccio una chiamata AJAX e quindi chiamare utilizzare questo metodo _complete
al fuoco dopo l'Ajax ha finito come:
self._complete(self.options.complete);
Quindi, se, quando uso il widget, passo qualcosa per l'opzione complete
in questo modo:
complete : function(){$('.gridrow').css('background-color','#FFF');}
I vedrà questa uscita nella console come:
function(){$('.gridrow').css('background-color','#FFF');}
Ma quello che voglio veramente è quello di applicare in realtà che il codice, in modo che cambia il colore di sfondo classi gridrow.
Mi può passare in qualsiasi e farlo uscita nella console, ma come ho effettivamente applico alla pagina?
Soluzione
Non so il motivo per cui è necessario passare nella funzione complete
alla funzione _complete
, sicuramente si può semplicemente prova per esso e poi eseguirlo. Il cambiamento chiave è che è necessario richiamare la funzione complete
utilizzando ()
:
_complete : function() {
if (this.options.complete) {
this.options.complete(); // execute the input function
}
}
Se si desidera registrare il risultato di tale funzione per la console quindi garantire che complete
restituisce un valore:
complete : function() { return $('.gridrow').css('background-color','#FFF'); }
Quindi:
_complete : function() {
if (this.options.complete) {
console.log(this.options.complete()); // print the result
}
}