我用这个扯掉了我的头发。我有一个函数,我可以在准备好时加载,单击时加载,但当我将其放入绑定事件处理程序中时则不行。
// 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()
的原因相同。