JQuery - Exposiciones de eventos
-
26-09-2019 - |
Pregunta
Estoy tratando de escribir mi propio complemento jQuery. Mi objetivo es adjuntarlo a un formulario para anular el envío. Tengo lo básico, pero mi problema radica en "exponer" eventos.
Esto es lo que quiero hacer:
$('#myobject').myplugin({
setting1: 'somevalue',
beforesubmit: function(){ ... }
});
Esto es lo que tengo hasta ahora
$.fn.myplugin= function (options) {
var settings = {
setting1: '',
beforesubmit: function() { return true; }
};
return this.each(function () {
// If options exist, lets merge them
// with our default settings
if (options) {
$.extend(settings, options);
}
//fire beforesubmit
$(this).live("submit", function(){
//do stuff
}
});
};
Los ?? radica en cómo despido el evento. También quiero tener otros eventos, como OnError, Aftersubmit, etc.
Solución
Puede llamar al método, reemplazando esto:
//fire beforesubmit
Con este:
if(settings.beforesubmit) settings.beforeSubmit();
También puede hacer esto, agregando los parámetros de devolución de llamada que desee, por ejemplo:
if(settings.beforesubmit) settings.beforeSubmit.call(this, someVariable);
Una alternativa (no apropiada para algunas situaciones) es activar sus propios eventos y dejar que el modelo de enlace jQuery haga el trabajo, por ejemplo:
$(this).trigger("beforeSubmit");
Luego, en otro lugar, ata al evento, por ejemplo:
$(".someElement").bind("beforeSubmit", function() { alert("submit!"); });
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow