放置在绑定事件处理程序中时未定义的函数



我用这个扯掉了我的头发。我有一个函数,我可以在准备好时加载,单击时加载,但当我将其放入绑定事件处理程序中时则不行。

// 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

为什么前两个工作正常,而最后一个不能?我从解释中遗漏/不理解什么?真的很感激一些方向!

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

您可以使用$.calHeader= function而不是使用$.fn.calHeader = function创建它并执行以下操作:

$(".prevMonth").on("click", $.calHeader);

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

这与您可以做$(".prevMonth").click()但不能click()的原因相同。

相关内容

  • 没有找到相关文章

最新更新