e.preventDefault - 未定义e

时间:2012-11-30 17:14:39

标签: javascript jquery

所以我有这个JS,当我运行代码时,我得到“e未定义” - 我缺少什么?

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

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

5 个答案:

答案 0 :(得分:9)

使用此:

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

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

答案 1 :(得分:4)

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

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

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

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

答案 2 :(得分:1)

您正在调用函数而不是传递处理程序名称以进行单击。从切换过滤器删除括号()更改

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

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

答案 3 :(得分:1)

始终可以e = e || window.event确保您有活动。

答案 4 :(得分:0)

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

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

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

由于