我有一个函数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的回调('更改')
答案 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));