JavaScript在页面加载而不是事件时触发(错误)

vuv7lop3  于 2022-11-27  发布在  Java
关注(0)|答案(3)|浏览(152)

我遇到了一个最奇怪的问题,当我在一个事件上调用函数时。我试图让一个函数在使用$(window).resize()调整窗口大小时运行,但它似乎在DOM加载时就启动了这个函数,然后再也没有启动过。
我可能错过了一些非常简单的东西,但我已经看了一整天,我需要一点外界的帮助。
我已经在JSfiddle上创建了一个淡化版本,它做同样的事情,但是使用$('a').click()而不是$(window).resize(),所以它更容易测试。当同样的问题突然出现时,我有一种感觉,我的函数有什么问题,但我就是看不到。
链接在这里http://jsfiddle.net/sambeckhamdesign/APLZ2/1/

l2osamch

l2osamch1#

试试看:

$('a').click(function(){
    alert('hello');
}, imageResizer());​
qco9c6ql

qco9c6ql2#

您正在运行该函数并将其输出作为参数发送到jQuery中:

$('a').click(alert('hello'), imageResizer());

相反,请尝试以下操作:

$('a').click(function() {alert('hello');  imageResizer(); });

这提供了一个匿名函数,当点击项目时,它将运行,调用imageResizer(),而我们使用的方法是,它运行imageResizer()函数,并将其返回值放入onclick处理函数中。它后来没有工作的原因是,它会将imageResizer()函数的返回值视为它试图运行的代码。

jq6vz3qz

jq6vz3qz3#

您正在触发事件,而不是为其分配处理程序

$('a').click(alert('hello'), imageResizer());​

应该是

$('a').click(function(event) {
   event.preventDefault(); // I suppose you will want that ... it will avoid your window jumping to the top when you click due to the href="#"
   alert('hello');
   imageResizer();
});​

相关问题