我有一个弹出对话框,我试图让它尽可能动态,所以我可以发送任何我想要的功能。我想创建一个回调函数,这样我就可以传递我想要的任何函数,它会在我的对象上做任何我需要的东西(在这个例子中只是打印一些东西来测试它。
以下是调用弹出窗口时发生的情况:
function DisplayPopUp(obj, callback) {
//On Action Clicked
$('#actionButton').click(function(e){
e.preventDefault();
callback(Obj);
});
}
这是激活PopUp功能的函数
$('.delete').click(function(){
var obj="something something";
DisplayPopUp(obj,function(){console.log('going to delete');});
});
不知何故,这不起作用,我从firebug得到这个错误:
Obj is not defined
显然我没有正确地转移我的功能 - 我应该怎么做?
答案 0 :(得分:2)
您正在呼叫callback(Obj)
,但您的变量名称为obj
。检查你的情况。
答案 1 :(得分:1)
当您在DisplayPopup()
中调用回调时,请传递参数obj
,而不是Obj
。
答案 2 :(得分:1)
好吧,Obj
未定义 。它应该是obj
。
收到错误消息时,您应该做的第一件事就是阅读它。 :)
答案 3 :(得分:1)
我发现此代码存在多个可能的问题:
首先,Obj
的情况是错误的。它应该是这样的:
function DisplayPopUp(obj, callback) {
//On Action Clicked
$('#actionButton').click(function(e){
e.preventDefault();
callback(obj);
});
}
但是,第二,我认为你没有正确使用事件处理程序。您正在通过单击处理程序调用DisplayPopup。但是,在该单击处理程序中,您将在另一个对象上安装另一个单击处理程序。这真的是你想要做的吗?除非你从这里留下了一堆代码来创建/销毁actionButton或取消绑定点击处理程序,否则每次点击删除按钮时,你都可以轻松地在#actionButton上使用多个点击处理程序。