How do I write a jquery function that accepts a callback as a parameter
function ChangeDasPanel(controllerPath, postParams, f) { $.get( controllerPath, postParams, function(returnValue) { var $DasSpace = $('#DasSpace'); $DasSpace.hide( "slide", { direction: "right" }, 1000, function() { $DasSpace.contents().remove(); $DasSpace.append(returnValue).css("display", "block"); $DasSpace.show("slide", { direction: "right" }, 1000); } ); if (typeof f == "function") f(); else alert('meh'); } );};
You can pass functions like any other object in JavaScript. Passing in a callback function is straight-forward, you even do it yourself in the $.post()
call.
You can decide whether you want to have your callback called as part of the $.post()
callback or on its own.
You know that global variables and functions are evil, so why not put your's into the jQuery namespace:
$.extend({ myFunc : function(someArg, callbackFnk){ var url = "http://example.com?q=" + someArg; $.getJSON(url, function(data){ // now we are calling our own callback function if(typeof callbackFnk == 'function'){ callbackFnk.call(this, data); } }); }});$.myFunc(args, function(){ // now my function is not hardcoded // in the plugin itself});
Read this post to get a better understanding: Creating callback functions in jQuery
If I understand you correctly, it's as easy as setting another parameter and calling the variable as a function:
function foo(mycallback) { mycallback();}