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.

¿Fue útil?

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
scroll top