2012-02-02 9 views
7

Tengo algunas Clases de Java (métodos ctor + prototype) que deseo que sus instancias puedan emitir evnets.Uso de Jquery para permitir eventos en objetos normales de JS

para que el código usando esta clase podría así que algo como:

var instance=new SomeObject(); 
instance.on('customEventName',function(event){do_stuff()} 

estoy trabajando en un entorno de jQuery y de elementos de la interfaz estoy usando .trigger y .en el que funciona muy bien para mí, yo estaba deambular cuál sería la mejor forma de implementar la misma sensación con respecto a los objetos comunes.

Estoy pensando en establecer un mapa de $ .Callbacks() objetos basados ​​en el nombre de evento personalizado, y agregar .on y .trigger por prototipo de objeto O tal vez solo puedo mantener una variable de instancia de eventsPoint inicializada en un vacíe $() y conecte los métodos .on y .trigger del prototipo a este objeto de eventos.

¿Alguna otra/mejor idea?

Respuesta

6

jQuery realidad le permite hacer esto de manera muy sencilla, al igual que si se tratara de un elemento DOM:

var instance = new SomeObject(); 
$(instance).on("customEventName", function() { 
    do_stuff(); 
}) 

// Later... 
$(instance).trigger("customEventName"); 

Todos los controladores de eventos se almacenan en el almacén de datos interno de jQuery y jQuery añade una propiedad a su objeto que contiene el índice de los datos dentro de esa tienda.

+2

muchas gracias, esto hace todo lo que necesito. Nunca lo hubiera intentado después de leer aquí: http://api.jquery.com/Types/#jQuery that '" Un objeto jQuery contiene una colección de elementos del modelo de objetos de documento (DOM) que se han creado a partir de una cadena HTML o seleccionado de un documento "'. – epeleg

+0

cualquier oportunidad, ¿sabes cómo ahora enumerar todos los eventos vinculados a algún objeto? – llamerr

Cuestiones relacionadas