1

所以我有这个 JS,当我运行代码时,我得到“e is not defined”——我错过了什么?

$('ul.result-filters > li a').click(toggleFilters());

function toggleFilters(e) {
   e.preventDefault();
   //do more stuff
}
4

5 回答 5

9

用这个 :

$('ul.result-filters > li a').click(toggleFilters);

您传递的是结果,toggleFilters()而不是传递函数本身。

于 2012-11-30T17:15:12.780 回答
4
$('ul.result-filters > li a').on('click', toggleFilters);

function toggleFilters(e) {
   e.preventDefault();
   //do more stuff
}

在函数后添加括号时,它会立即执行并将结果传回。要仅引用该函数并在单击时调用它,请删除括号。

这也将使事件可用于toggleFilters函数!

于 2012-11-30T17:15:39.003 回答
1

总能做到e = e || window.event确保你有活动。

于 2012-11-30T17:17:07.017 回答
1

您正在调用函数而不是传递处理程序名称来单击。从 toggleFilters() 中删除括号

改变

$('ul.result-filters > li a').click(toggleFilters());

$('ul.result-filters > li a').click(toggleFilters);
于 2012-11-30T17:15:32.057 回答
0

您需要使用函数名称而不是函数调用 toggleFilters()。

$('ul.result-filters > li a').on('click', toggleFilters);

function toggleFilters(e) {
 e.preventDefault();
//do more stuff
}

谢谢

于 2012-11-30T17:21:53.653 回答