我的原始(工作)代码如下所示:
jQuery().ready(function ($) {
$('[id="errorMessages"]').ajaxStart(function () {
$(this).html("");
});
$('[id="errorMessages"]').ajaxError(function (e, jqxhr, settings, exception) {
//...
});
});
当我尝试将匿名函数替换为命名函数调用时,例如:(我正在为某些要求做 POC,期望这样的实现。)
function fs() {
$(this).html("");
}
function fe(e, jqxhr, settings, exception) {
//...
}
jQuery().ready(function ($) {
$('[id="errorMessages"]').ajaxStart(fs());
$('[id="errorMessages"]').ajaxError(fe(e, jqxhr, settings, exception));
});
我收到一条错误消息,指出参数“e”未定义。但是没有参数的函数似乎工作正常。
我想知道匿名函数如何接收参数,而在调用外部函数时却不可用。
有没有办法将这些参数化匿名函数转换为常规函数调用。
最佳答案
您错误地将函数分配给处理程序,试试这个:
jQuery().ready(function ($) {
$('[id="errorMessages"]').ajaxStart(fs);
$('[id="errorMessages"]').ajaxError(fe);
});
请注意,传递不带括号的函数名称意味着您正在提供事件发生时应使用的函数的引用。
您当前的代码将在附加事件时调用该函数(因此您得到 'e' is undefined
的原因)并将该函数的结果分配给事件处理程序。
关于javascript - 用命名函数替换匿名函数(在 jQuery 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18760908/