Jquery 用于滚动事件的语法是否正确?

Jquery 用于滚动事件的语法是否正确?,jquery,Jquery,我有一个名为myFunction的函数在窗口滚动时立即运行。这一个工作正常,正如预期的那样: $(function () { $(window).scroll(myFunction); myFunction(); }); 虽然这个根本不起作用: $(function () { $(window).on("scroll", myFunction()); myFunction(); }); 我不明白,第二版怎么了?还有,为什么我必须提到myFunction()两次 版本2有什么问

我有一个名为
myFunction
的函数在窗口滚动时立即运行。这一个工作正常,正如预期的那样:

$(function () {
  $(window).scroll(myFunction);
  myFunction();
});
虽然这个根本不起作用:

$(function () {
  $(window).on("scroll", myFunction());
  myFunction();
});
我不明白,第二版怎么了?还有,为什么我必须提到
myFunction()
两次

版本2有什么问题

在第二个示例中,您将立即调用
myFunction()
,并设置它对事件处理程序的响应。大概您没有从这个调用返回函数,所以什么也没有发生

为清楚起见,第一个示例在向事件处理程序提供函数引用时起作用

为什么我必须两次提到myFunction()

这是因为您将
myFunction()
分配给事件处理程序,并在页面加载时立即运行。如果要删除此重复,可以触发加载时发生的
滚动
事件:

$(function () {
  $(window).on("scroll", myFunction).trigger('scroll');
});

很好的解释,特别是关于触发器事件的例子,以避免代码重复。是的,Rory,我完全同意GVIjayan:解释得很好。非常感谢你。