e.preventDefault – e未定义

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

$('ul.result-filters > li a').click(toggleFilters()); function toggleFilters(e) { e.preventDefault(); //do more stuff } 

用这个 :

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

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

 $('ul.result-filters > li a').on('click', toggleFilters); function toggleFilters(e) { e.preventDefault(); //do more stuff } 

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

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

总是可以做e = e || window.event e = e || window.event以确保您拥有该事件。

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

更改

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

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

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

 $('ul.result-filters > li a').on('click', toggleFilters); function toggleFilters(e) { e.preventDefault(); //do more stuff } 

谢谢