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

时间:2017-12-27 13:09:21

标签: javascript jquery javascript-events onchange delegation

情景1:

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

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

情景2:

但是如果我通过闭包函数来调用。该事件得到了适当的倾听和处理。所以它运作正常。

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

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

1 个答案:

答案 0 :(得分:1)

这个答案是相关的:https://stackoverflow.com/a/7102440/7316502

在第1种情况下,您正在调用一个函数,并将其返回值作为回调传递给更改侦听器。这导致过早执行showMyImage

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