我使用JQuery对话框,从PHP我可以为按钮构建一些加载项。为了能够从服务器端添加代码,我通过参数传递方法。问题是FireBug告诉我该方法没有定义:
alt text http://clip2net.com/clip/m12122/1264557672-clip-8kb.png
okHandler是此方法调用的参数,用于引发对话框,它包含一个简单的警报消息,稍后会进行一些Ajax调用。知道为什么它不起作用吗?
alt text http://clip2net.com/clip/m12122/1264557824-clip-6kb.png
答案 0 :(得分:4)
看起来okHandler是一个包含函数声明的字符串,而不是实际的函数?
okHandler = "function anonymous(){alert('This is a test');}";
而不是
okHandler = function(){alert('This is a test');};
答案 1 :(得分:0)
As John Kugelman notes,okHandler
似乎是一个字符串。如果它是一个函数它会更好...但是,如果它必须是一个字符串,那么你需要通过eval()
来实际执行它:
eval( "(" + okHandler + ")()" )
答案 2 :(得分:0)
当你收到错误时,是否加载了okHandler()函数(作为有效的JS对象 - 而不是String)?
我认为如果foo尚未在某处被声明为变量,那么调用类似“if(foo!= null)”的东西是不行的。 FireBug会抱怨:“okHandler没有定义。”
尝试这样的事情......
var myHandlers = {};
// Load okHandler as a member of myHandlers when applicable here...
$('#dialog'+idbox)...
"Oky": function() {
myHandlers.okHandler && myHandlers.okHandler();
...
}
}