Muchas veces me encuentro con situaciones en las que quiero ejecutar una función jQuery o inicializar un complemento jQuery como tablas de datos jQuery y me gustaría que se ejecute el código después de que la función haya finalizado. Las funciones de jQuery como hide o fadein u otras funciones de transformación toman un parámetro de devolución de llamada opcional para lograr esto. Sin embargo, hay otras funciones jQuery que simplemente devuelven el objeto 'this' para permitir el encadenamiento. Me gustaría saber si hay una manera de usar el encadenamiento o algún otro método para ejecutar algún tipo de función genérica que tome una devolución de llamada después de que termine la función jQuery que llamo.

Algo así como:

$("#element").datatable().executeCallback(myCallbackFunction);
1
Keith.Abramo 6 ago. 2011 a las 05:11

3 respuestas

La mejor respuesta

Eche un vistazo a jquery queue http://api.jquery.com/queue/, esto podría ayudar tú.

2
ShankarSangoli 6 ago. 2011 a las 01:14

Solo necesita un complemento que tome un argumento de función, lo aplique a todo lo que coincida con el objeto y devuelva el objeto en sí. Una implementación simple y encadenable "genericCallback":

function makeRed() {
    $(this).css("border", "1px solid red");
}

$.fn.genericCallback = function(fn) {
    if(!typeof fn === 'function') {
        console.log('Function expected, got a ' + typeof fn);   
    }
    return this.each(function() {
        fn.apply(this);
    });
};

$("div").genericCallback(makeRed);

Puedes probarlo aquí.

2
karim79 6 ago. 2011 a las 01:30

Esto no es muy robusto, pero hace lo que desea para devoluciones de llamada genéricas.

$.fn.executeCallback = function( fn )
{
    window[fn]();
}
0
Matt R. Wilson 6 ago. 2011 a las 01:16