我有一个我需要从几个不同的地方调用的函数,该函数在单击'a'标签或从提交事件运行后运行,并且在所有三个实例中我需要阻止默认但我收到错误'无法阻止默认未定义'。
$('a#Link').on('click', supaFunc);
function supaFunc(e) {
e.preventDefault();
// do all the things...
}
看一下文档,但我还没解决。我确定它与上下文有关,我可以让这个工作买。在.on方法中调用匿名函数,工作正常,但我不想重复这个函数三次。
答案 0 :(得分:1)
jQuery事件处理程序应始终将事件作为其第一个参数。如果它未定义,我怀疑你在某个地方以不同的方式调用处理程序。
要了解的位置和方式,请尝试将代码更改为
function supaFunc(e) {
if (typeof e === 'undefined') {
debugger;
}
e.preventDefault();
}
现在,在没有参数的情况下调用函数时,调试器将启动。
打开浏览器的开发者工具,然后重新加载/运行该页面。出现问题时,请向下按调用堆栈,直到找到调用supaFunc
的位置,而不将事件作为参数。
Chrome开发者工具调试器的示例图片。
答案 1 :(得分:0)
在所有三种情况下可能都不存在<a id="link"></a>
,错误似乎指向了这一点。