2011-04-14 45 views
2

我希望能够将回调函数绑定到先前定义的函数 并且能够使用该函数范围中定义的两个变量。jQuery,将回调绑定到任何函数

它应该是这样的:

function mainFunction(){ 
    var localForMain; 
} 

$(document).ready(function(){ 

    // bind a call back method to the 'mainFunction' 
    $(mainFunction).bindCallback(function(){ 

     // ...use the localForMain variable HERE; 

    }); 


}); 

是否有可能实现这样的事情?

+0

该函数的回调函数应该如何工作?应该在调用'mainFunction'时调用它吗?这不可能。 – 2011-04-14 10:09:34

+0

是的,它应该在mainFunction执行后立即触发 – Antagonist 2011-04-14 10:43:45

回答

0

要达到此目的,您需要在mainFunction的范围内。它可以做很容易:

function mainFunction(){ 
    var localForMain; 


$(document).ready(function(){ 

    // bind a call back method to the 'mainFunction' 
    $(mainFunction).bindCallback(function(){ 

     // NOW YOU CAN USE the localForMain variable HERE; 

    }); 


}); 

}

+1

'jQuery#bindCallback'不存在,因此此代码示例不起作用。 – 2011-04-14 10:09:08

+2

这里是交易,我有多个文件,我'覆盖'相同的方法(为不同页面重复定义它,具有稍微不同的功能),所以我想写一个其他方法来'扩展'功能。 – Antagonist 2011-04-14 10:10:28

+1

@Antagonist:也许你必须重新考虑你的设计。你可以例如创建一个对象,该对象具有调用由其他代码定义的子功能的“主”功能。 – 2011-04-14 10:25:46

2

它是不可能绑定回拨功能以这样一种方式。你必须在函数内编程。

function SampleWithCallBack(callbackfunction) 
{ 
     code here 
     callbackfunction(params); 
} 

关于在上下文中使用定义的变量。你应该在参数中传递变量或者在全局上定义它,这不是一个好方法

+0

+1我认为就是这样。 – 2011-04-14 10:10:56

+0

其实这是我试图避免的解决方案。 我的想法/问题是,以这种方式来扩展该函数直接写入它的功能。 – Antagonist 2011-04-14 10:19:04