调用javascript回调

时间:2016-06-20 10:30:40

标签: javascript jquery callback anonymous-function

我想将匿名函数作为回调传递,然后调用它。我可能遗漏了一些简单的东西,但我只是得到了错误' Uncaught类型错误 - 回调不是函数'。 这就是我正在做的事情 - (使用jQuery) - 我在创建新对象时将回调作为匿名函数传递:

$('#someid').alphaColorPicker({
            callback: function() {
                console.log("called")
            }
        });

然后我在某个时候(或尝试)调用它:

$.fn.alphaColorPicker = function(callback) {

    ...
    ...

    callback(); //this throws the error
}

如何正确调用回调函数? 感谢。

4 个答案:

答案 0 :(得分:3)

查看您要发送的值:

{ callback: function () { ... } }

这不是一个功能。

这是一个名为callback的属性的对象,它是一个函数。

因此:

callback.callback();

或者你可以传递一个实际的函数而不是一个对象:

$('#someid').alphaColorPicker(function() { console.log("called") });

答案 1 :(得分:0)

您没有直接传递函数,而是传递了具有callback属性

的对象

制作

$.fn.alphaColorPicker = function(options) {

    ...

    options.callback(); //this throws the error
}

答案 2 :(得分:0)

传递给alphaColorPicker的东西不是回调函数,而是包含值为回调的对象。

{ // When putting it within {} its a new object.
  // Where 'callback' is a member/key of the object.
  callback : function() {
    console.log("called");
}

如果你改为直接传递函数:

$('#someid').alphaColorPicker(function() {
    console.log("called");
});

您可以通过callback();立即拨打电话。 如果您希望将其保留为对象,可以通过调用对象的成员来调用它,而不是尝试将对象作为函数调用:

callback.callback();

答案 3 :(得分:-2)

发现问题,不应该将功能传递给

callback: function() {
                console.log("called")
            }

但就像这样:

    $('#' + boxID).alphaColorPicker(function() {
            console.log("hello")
    });

如果我想传递参数,我可以这样做:

$('#' + boxID).alphaColorPicker({x:styleName, y:id, callback:function() {
        //do something
}});

但我对如何在jQuery事件处理程序中输入/输出参数感到困惑,例如:

$("#"+boxID).alphaColorPicker({x:styleName, y:this.inputID}, function(e){}

});

您如何在此处访问回调?在我的例子中,在alphaColorPicker中,callback.x和callback.y显然可用,但回调函数作为对象传递,我看不到如何调用它。