我想将匿名函数作为回调传递,然后调用它。我可能遗漏了一些简单的东西,但我只是得到了错误' Uncaught类型错误 - 回调不是函数'。 这就是我正在做的事情 - (使用jQuery) - 我在创建新对象时将回调作为匿名函数传递:
$('#someid').alphaColorPicker({
callback: function() {
console.log("called")
}
});
然后我在某个时候(或尝试)调用它:
$.fn.alphaColorPicker = function(callback) {
...
...
callback(); //this throws the error
}
如何正确调用回调函数? 感谢。
答案 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显然可用,但回调函数作为对象传递,我看不到如何调用它。