我有回调的以下功能。该函数将画布渲染为div,然后回调隐藏画布。我不认为我这样做是正确的,因为回调在函数完成之前执行,即回调隐藏了画布(#a),但它在完成对div的渲染之前隐藏了画布。
$('#sl').on('mouseup', function(){
canvas=document.getElementById("a");
ctx=canvas.getContext("2d");
dataURL = canvas.toDataURL();
$('.s').find('img').attr('src', dataURL);
},callback);
function callback(){
$('#a').hide();
}
答案 0 :(得分:0)
这里有些事情是错的。
首先,如果你正在使用jQuery,为什么要使用getElementById
?似乎违反直觉。如果您正在使用jQuery,请坚持下去。
其次,回调的重点是让元素隐藏起来?
这是我将如何做到的。
$('#sl').on('mouseup', function(){
const $canvas = $('#a')[0];
const ctx = $canvas.getContext("2d");
const dataURL = $canvas.toDataURL();
$('.s').find('img').attr('src', dataURL);
$('#a').hide();
});
免责声明,此代码未经测试,基于您提供的内容。
答案 1 :(得分:0)
首先,您对on
方法的使用是错误的。根据{{1}}方法的jQuery文档:
on
此方法以特定顺序接受事件类型,可选的选择器或数据以及处理程序/回调。在您的情况下,您传递选择器和两个错误的函数。当传递3个参数.on( events [, selector ] [, data ], handler )
时,方法认为最后一个是事件发生时要调用的实际回调。当on
事件发生时,您的代码所执行的操作是使用mouseup
选择器隐藏元素。正确的实施将是:
#a