委派事件 onchange 在页面加载时立即触发

Delegation event onchange triggers immediately on page load

场景一:

$(function () {
    $('#disp_body').on('change', '#image', showMyImage(this));
});

如果我直接调用函数 showMyImage,它会调用页面加载本身。

场景二:

但是如果我通过闭包函数调用。该事件得到妥善收听和处理。所以它工作正常。

$(function () {
    $('#disp_body').on('change', '#image', function() {
        showMyImage(this);
    });
});

我真的很想知道为什么方案 1 不起作用,但方案 2 不起作用。

这个答案是相关的:

在情况 1 中,您正在调用一个函数,并将其 return 值作为回调传递给更改侦听器。这导致 showMyImage.

过早执行

在第二种情况下,您正在传递一个用作回调的函数,但您没有直接调用它。这允许更改侦听器调用它并根据需要在更改事件上调用 showMyImage