Canvas和jQuery:为什么没有getContext()

时间:2014-08-16 14:45:32

标签: jquery html5 canvas

我已阅读thisthis,但我的问题无法解决。如果我使用jQuery创建一个画布,然后通过document.getElementById()调用它,我可以调用getContext('2d')并且它可以工作。像这样:

var ctx =
    $('<canvas />')
    .attr({
        id: 'canvasMenuSmall',
        width: '500px',
        height: '500px'
    })
    .appendTo('body');
var c=document.getElementById("canvasMenuSmall"),
    ctx=c.getContext('2d');

但是,如果我尝试立即在对象上调用getContext('2d'),它就无法处理错误Uncaught TypeError: undefined is not a function

var ctx =
    $('<canvas />')
    .attr({
        id: 'canvasMenuSmall',
        width: '500px',
        height: '500px'
    })
    .appendTo('body')
    .getContext('2d'); // error raised

怎么来的?

2 个答案:

答案 0 :(得分:4)

您的代码无效,因为您尝试使用getContext of jQuery,而不是DOM元素。不要将getContext链接到appendTo,而是使用jQuery来获取元素。

工作声明将是

$().appendTo("#place")[0].getContext()

而不是

$().appendTo("#place").getContext()

答案 1 :(得分:0)

.getContext('2d')不是jQuery相关的东西......它是一个dom对象的方法。

.getElementById()会返回一个dom元素,这就是它在那里工作的原因。