2017-12-27 222 views
0

方案1:代表团事件的onchange imediately触发页面加载

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

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

方案2:

但是,如果我通过闭合功能调用。事件正确地收听并处理。所以它工作正常。

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

我想知道为什么场景1没有工作,但方案2

+0

这里有两个级别的执行。你应该调试执行顺序来理解为什么会发生这种情况,否则你会经常遇到这种情况。 –

回答

1

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

在案例1,你调用一个函数,并通过其作为回调将值返回给更改侦听器。这导致过早执行showMyImage

在情况2中,您正在传递一个函数用作回调函数,但您不直接调用它。这允许更改侦听器调用它并根据需要调用更改事件的showMyImage