This question already has answers here:
Why does click event handler fire immediately upon page load?
(4个答案)
2年前关闭。
方案1:
如果我直接调用函数
方案2:
但是如果我通过闭包函数调用。该事件已正确侦听和处理。所以它工作正常。
我真的很想知道为什么场景1不能正常工作,而场景2却不能正常工作。
(4个答案)
2年前关闭。
方案1:
$(function () {
$('#disp_body').on('change', '#image', showMyImage(this));
});
如果我直接调用函数
showMyImage
,它将在页面加载本身上调用。方案2:
但是如果我通过闭包函数调用。该事件已正确侦听和处理。所以它工作正常。
$(function () {
$('#disp_body').on('change', '#image', function() {
showMyImage(this);
});
});
我真的很想知道为什么场景1不能正常工作,而场景2却不能正常工作。
最佳答案
此答案是相关的:https://stackoverflow.com/a/7102440/7316502
在情况1中,您正在调用一个函数,并将其返回值作为回调传递给更改侦听器。这会导致showMyImage
的过早执行。
在第二种情况下,您传递了一个用作回调的函数,但没有直接调用它。这允许更改侦听器调用它,并根据需要在更改事件上调用showMyImage
。
09-05 22:09