我有以下内容:
$(function () {
$.ajaxSetup({ cache: false });
var dialogs = {};
var formSubmitHandler = function (e) {
...
}
}
然后在另一个脚本中我尝试调用
function dialogClick(link) {
$.get(viewUrl + parameters)
.success(function (content) {
if (content.match(/^[eE]rror/)) {
mvcOnFailure(data)
} else {
$.modal({
title: title,
closeButton: true,
content: content,
width: false,
resizeOnLoad: true
}).find('form').submit(formSubmitHandler).end();
}
})
请注意,我已经删除了部分脚本以便于阅读。没有脚本错误只显示以下错误:
在第二个脚本中,我在Internet Explorer中收到一条错误消息“SCRIPT5009:'formSubmitHandler'未定义'。
我是否错误地称呼它?我认为这个功能是全局的,当我检查时 它所在的脚本附在页面上。
答案 0 :(得分:7)
不,这不是全球性的;您的“formSubmitHandler”函数在您发布的第一个示例代码块的“ready”回调中声明。因此,它对该功能是私密的。
如果你真的想要一个全局功能,你可以做的是:
window['formSubmitHandler'] = formSubmitHandler;
在第一个函数中。或者,您可以将其设为jQuery“全局”函数:
$['formSubmitHandler'] = formSubmitHandler;
在这种情况下,你可以$.formSubmitHandler
开始。
答案 1 :(得分:0)
尝试将功能移出功能块,例如
$(function () {
$.ajaxSetup({ cache: false });
var dialogs = {};
}
var formSubmitHandler = function (e) {
...
}
答案 2 :(得分:0)
formSubmitHandler
仅存在于您声明的函数范围内,因为您使用了var
变量。
您需要:
dialogClick
formSubmitHandler
或仅window.formSubmitHandler
function formSubmitHandler(){}
醇>
答案 3 :(得分:0)
formSubmitHandler
是在dialogClick()
函数
所以
formSubmitHandler
声明为global
dialogClick
函数中定义函数document.ready
(并且formSubmitHandler
是可到达的,因为在父作用域中)