放入绑定事件处理程序时未定义的函数

时间:2016-03-07 17:31:48

标签: jquery events event-handling bind

我正用这个撕掉我的头发。我有一个函数,我可以在点击时加载,但不是当我把它放在绑定事件处理程序中时。

// these work
$(document).ready().calHeader();
$(".prevMonth").click().calHeader();

// this doesn't work
$(".prevMonth").bind("click", calHeader);

我正在努力让最后一个工作,因为我不希望该功能在点击之前运行。几个回答问题的解决方案说是第三种方式。但我一直在Chrome控制台中收到此错误:

Uncaught ReferenceError: calHeader is not defined(anonymous function) @ override.js:101

为什么前两个工作正常但最后一个没有?从解释中我缺少什么/不理解?真的很感激一些方向!

2 个答案:

答案 0 :(得分:1)

.calHeader()有效,因为calHeader函数是jQuery对象的属性(即它是由插件定义的jQuery方法),而其他jQuery方法返回一个jQuery对象,以便你可以链接这样的方法。它不是变量名,因此您无法直接调用它或将其作为函数参数传递。

$(".prevMonth").click()click()相同的原因相同。

答案 1 :(得分:1)

由于您的插件似乎并不依赖于传递给它的任何选择器元素,因此它似乎只不过是一个功能

您可以使用$.fn.calHeader = function并执行:

,而不是使用$.calHeader= function创建它
$(".prevMonth").on("click", $.calHeader);