2017-12-27 221 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