jQuery回调函数里面的变化

时间:2017-10-22 23:57:30

标签: javascript jquery

我有一个函数fileUploadHandler,我在.on()中作为参数传递,如下所示:

$('#image_upload').on('change', fileUploadHandler);

我想为fileUploadHandler分配一个回调,以便它在上面完成后立即运行。我尝试了几件事,例如:

fileUploadHandler(event, function() {
        // code to run as callback
    }
});

但是我无法弄清楚如何在fileUploadHandler运行并且on更改完成后立即运行回调。

进一步阐述:

fileUploadHandler包含执行多个图像裁剪操作的代码,包括嵌套的AJAX调用(可能组织更清晰,但无论哪种方式)。我试图使用以下方法获取宽度和高度HTML属性的值:

$(".cr-image").attr("width") and $(".cr-image").attr("height")

但是,由于这些值是使用其他JS库填充的,因此运行上面的attr方法会给我未定义而不是值,我假设可以通过在fileUploadHandler运行后运行attr来修复它。但与此同时,fileUploadHandler本身就是对.on的回调('更改')

1 个答案:

答案 0 :(得分:1)

fileUploadHandler是“回调”函数,或者更确切地说是事件处理程序,将在您的更改事件发生时调用。

function fileUploadHandler (event) {
    // code that runs when the change event is fired.
    // $(event.currentTarget) will be the element that triggered the event
}
$('#image_upload').on('change', fileUploadHandler);

如果由于某种原因你需要更复杂,你可以尝试

function fileUploadHandler(callback, event) {
    // do stuff with the event/element here
    $.ajax('/foo.php').then(callback);


}
function followupCallback(response) {
    console.log(response); 
    // do your processing here using the server responses.
}
$('#image_upload').on('change', fileUploadHandler.bind(this, followupCallback));