How do I write a jquery function that accepts a callback as a parameter

后端 未结 4 1428
礼貌的吻别
礼貌的吻别 2021-01-30 03:08

I Have the following function.

function ChangeDasPanel(controllerPath, postParams) {

    $.post(controllerPath, postParams, function(returnValue) {

        $(         


        
相关标签:
4条回答
  • 2021-01-30 03:49
    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.

    0 讨论(0)
  • 2021-01-30 03:54

    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

    0 讨论(0)
  • 2021-01-30 03:56

    If I understand you correctly, it's as easy as setting another parameter and calling the variable as a function:

    function foo(mycallback) {
        mycallback();
    }
    
    0 讨论(0)
  • 2021-01-30 03:56

    Why don't you use an object that you can pass through to the function. It is much more jQuery like and it saves you having x named parameters which is hard to maintain as it can get unwieldy when you get past 3 params.

    e.g

    function callingFunction(){
    
          var fnSettings: {
            url: someUrl,
            data: params,
            callback : function(){}
          };
    
    
          yourFunction( fnSettings );
    
    }
    
    function yourFunction( settings ) {
    
          $.post( settings.url, settings.data, settings.callback );
    
    }
    
    0 讨论(0)
提交回复
热议问题