JavaScript在页面加载而不是事件上启动(Bug)

JavaScript firing on page load instead of event (Bug)

本文关键字:事件 启动 Bug 加载 JavaScript      更新时间:2023-09-26

在事件中调用函数时遇到了最奇怪的问题。我正试图在使用$(window).resize()调整窗口大小时运行一个函数,但它似乎会在加载DOM后立即启动该函数,然后再也不会启动。

我可能错过了一些非常简单的东西,但我已经看了一整天了,我需要一些外界的帮助。

我在JSfiddle上创建了一个淡化版本,它做了同样的事情,但使用了$('a').click()而不是$(window).resize(),所以测试起来更容易。当同样的问题出现时,我感觉我的功能有问题,但我就是看不见

链接在这里http://jsfiddle.net/sambeckhamdesign/APLZ2/1/

尝试:

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

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

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

相反,试试这个:

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

这提供了一个匿名函数,该函数将在单击项目时运行,调用imageResizer(),而按照您的方式,它运行imageResiser()函数并将其返回值放入onclick处理程序中。它后来不起作用的原因是,它将把imageResizer()函数的返回值视为试图运行的代码。

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

$('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();
});​