jQuery回调函数已执行但未达到预期值

时间:2017-08-10 19:29:50

标签: javascript jquery

我有回调的以下功能。该函数将画布渲染为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();
    }

2 个答案:

答案 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