jQuery setara dengan mendapatkan konteks Kanvas


155

Saya memiliki kode kerja berikut:

ctx = document.getElementById("canvas").getContext('2d');

Apakah ada cara untuk menulis ulang untuk digunakan $? Melakukan ini gagal:

ctx = $("#canvas").getContext('2d');

Jawaban:


282

Mencoba:

$("#canvas")[0].getContext('2d');

jQuery memperlihatkan elemen DOM yang sebenarnya dalam indeks numerik, di mana Anda dapat melakukan fungsi JavaScript / DOM yang normal.


13

Saya juga telah melihat bahwa lebih sering menggunakan .get (0) untuk merujuk target jquery sebagai elemen HTML:

var myCanvasElem = $("#canvas").get(0);

Mungkin untuk membantu menghindari referensi objek null potensial karena jquery mengembalikan null sebagai objek tetapi bekerja dengan elemen dari .get (0) mungkin tidak gagal begitu saja ... Anda dapat dengan mudah memeriksa apakah kanvas ditemukan terlebih dahulu sebelum .get (0) ) Suka

if( $("#canvas").length ) ctx = $("#canvas").get(0).getContext('2d');
else console.log('Error: Canvas not found with selector #canvas');

1
try{ 
   ctx = $('#canvas').get(0).getContext('2d');
}catch(e){ 
    console.log('We have encountered an error: ' + e);
}

atau...

if( typeof $('#canvas') === 'undefined'){ 
    var canvas = '<canvas id="canvas"><\/canvas>';
    $('body').append(canvas);
}
setTimeout( function(){ ctx = $('#canvas').get(0).getContext('2d'); }, 500);

Menggunakan setTimeout adalah cara mudah untuk memastikan Anda tidak mencoba memanggil elemen kanvas sebelum sepenuhnya dibuat dan terdaftar ke DOM.


Pertanyaan ini ditanyakan 8 tahun sebelum Anda menjawab. Periksa tanggal yang diminta sebelum menjawab!
Rojo

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.