2011-08-05 11 views
10

He desarrollado un plugin de jquery ui y realmente no puedo entender cuál de estos métodos debo usar. De acuerdo con la documentación de jQuery UI que debe utilizar _trigger para desencadenar los eventos, esto permite que los controladores que se inicializan con el plugin comojquery ui _trigger vs trigger

$("#id").pluginname({ 
    click: function(){ 
     //called when clicked 
    } 
}); 

Pero si más adelante desea adjuntar más oyentes a este evento que no pueden encuentra alguna forma de hacer eso. Estoy tratando de usar jquery bind, pero eso no funciona. ejemplo:

$("#id").bind("click", function(){ 
    //This does not get fired on click if using _trigger 
}) 

La única solución que tengo hasta ahora es que el fuego de ambos, pero se siente un poco extraño. Mi código debe hacer lo siguiente para el trabajo:

$("#id").pluginname({ 
    click: function(){ 
    //called when my plugin uses this._trigger('click') 
    } 
}).bind(function(){ 
    //called when my plugin uses this.element.trigger('click') 
}); 

estoy usando eventos personalizados, pero no creía que era relevante para esta pregunta. ¿Alguien tiene una idea sobre cómo usar el encadenamiento de eventos cuando usa _trigger()?

Respuesta

10

Usted debe unirse de esta manera:

$("#id").bind("pluginnameclick", function(){ 
+0

Hola, no soy capaz de conseguir este para trabajar, ¿tiene alguna referencia a cualquier documentación que pueda leer para entender esto mejor? – Tommy

+0

hmm. Lo siento, no recuerdo ninguno. Pruebe esto - http://www.erichynds.com/jquery/tips-for-developing-jquery-ui-widgets/ (busque "dialogopen") – bullgare

+6

Hola, gracias por su respuesta. Afortunadamente, descubrí un comentario en una página que decía que el nombre del evento se transformó en minúsculas. Mi ejemplo en este caso no entendió que tuve un evento con el nombre de camel case. Sin embargo, significa que su sugerencia es correcta. Muchas gracias por ayudarme en esto. – Tommy

4

se debe utilizar this._on y this._trigger hacer esto para que los eventos se limpian op al destruir el widget.

lo contrario tendrá que desvincular los eventos sí mismo o de lo contrario el widget no se limpiaron por la recolección de basura del navegador

esperanza que esto responda a su pregunta

+0

¿Me pregunto si hay alguna documentación sobre esto? – Giraldi