2011-12-18 41 views
0

我有一个弹出式对话框,并且我正在尝试使其尽可能动态,所以我可以向其发送任何我想要的功能。我想创建一个回调函数,这样我就可以传递我想要的任何函数,并且它将执行我需要的任何操作(在本例中只是打印某些内容以进行测试)。如何在JavaScript中传递函数作为参数

这是弹出窗口时发生的情况所谓:

​​3210

,这里是激活的弹出功能

$('.delete').click(function(){ 
    var obj="something something"; 
    DisplayPopUp(obj,function(){console.log('going to delete');}); 
}); 

功能不知怎的不工作,我从萤火虫得到这个错误:

Obj is not defined 

很明显,我不转移我的功能 - 我该怎么做?

+0

这是一个错字,你混合使用'Obj'大写和小写? – Li0liQ 2011-12-18 16:36:28

+1

对大写错误的实际提示,以及对[this]的downvotes(http://stackoverflow.com/questions/8508266/does-c-support-member-function-references)。愚蠢的网站! – 2011-12-18 16:37:42

回答

2

你叫callback(Obj),但你的变量名是obj。检查你的情况。

1

当您调用DisplayPopup()中的回调时,请传递参数obj而不是Obj

1

那么,Obj不是定义。它应该是obj

当您收到错误消息时,您应该做的第一件事是阅读它。 :)

1

我看到多个可能存在的问题与此代码:

首先,Obj的情况下是错误的。它应该是这样的:

function DisplayPopUp(obj, callback) { 

    //On Action Clicked 
    $('#actionButton').click(function(e){ 
     e.preventDefault(); 
     callback(obj); 
    }); 
} 

但是,第二我不认为你正在使用事件处理程序。您正在通过点击处理程序调用DisplayPopup。但是,在该点击处理程序中,您正在另一个对象上安装另一个点击处理程序。那真的是你想要做的吗?除非您遗留了一堆代码,这些代码会创建/销毁actionButton或取消绑定点击处理程序,否则每次单击删除按钮时,您都可以轻松地在#actionButton上结束多个点击处理程序。

+0

处理程序有不同的元素......如果我不得不猜测,我会说他正在实施“你确定吗?”框。 – 2011-12-18 16:42:37

+0

我知道他们在不同的元素。但假设''.delete''可以被多次点击,它们将在'#actionButton'上结束多个点击处理程序,因为每次调用时会附加一个新的处理程序。这可能是由代码的其余部分处理的,但由于我们看不到,我认为我应该将其作为可能的问题提及。 – jfriend00 2011-12-18 16:45:10

+0

我将继续并假设在'DisplayPopUp'的间隙中创建'#actionButton'。 – 2011-12-18 16:46:09

相关问题