martes, 29 de noviembre de 2011

This para jQuery UI y JavaScript

Buenas. Veréis, llevo ya unos días refactorizando un código javascript de esos infumables a POO para que el código sea muchisimo más mantenible. Hasta aquí ningún problema, pero el problema viene cuando quieres hacer uso de jQuery dentro de tus clases.

El problema es el siguiente: el objeto this cuando estas dentro de una función jQuery no es el mismo que cuando estas dentro de tu función definida para tu clase. Para evitar que uno machaque al otro, deberemos previamente guardar una referencia a dicha variable. Esto se consigue con el metodo data() que llevan muchas funcionalidades de jQuery UI. Para ejemplo un boton:
function MyClass() {
  this.myField = 1;
}

MyClass.prototype.MyMethod = function () {
  $("lista").sortable({
    start: function(event, ui) {
      alert("No es lo mismo this:" + $(this) + " que this:" + self.myField);
    }
  }).data("self", this);
}

No hay comentarios:

Publicar un comentario en la entrada