2010-05-27 5 views
141

Ich habe folgende Arbeits Code:jQuery Äquivalent den Kontext einer Leinwand bekommen

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

Gibt es eine Möglichkeit, es neu zu schreiben $ zu benutzen? Dadurch schlägt fehl:

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

Warum die Down-Abstimmung? – Claudiu

+6

Jetzt haben Sie viele upvotes :) –

+0

Weil einige Leute vergessen, dass es in Ordnung ist, Fragen zu stellen;) –

Antwort

244

Versuchen:

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

jQuery macht die tatsächliche DOM-Element in numerischen Indizes, bei denen Sie normale JavaScript/DOM-Funktionen ausführen können.

+0

Ich war nicht einmal auf der Suche nach, aber ich wünschte, ich wüsste das schon, OP Sie sind ein Heiliger sowie Matt. Du hast mich gerade eine Menge Zeit gerettet. – munchschair

+0

wow. hah, der erste Gedanke kam mir in den Sinn, und ich dachte, es würde nicht so gut funktionieren. – Eon

11

ich auch gesehen, dass es oft zu verwenden .get bevorzugt ist (0) ein jquery Ziel als HTML-Element zu verweisen:

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

Vielleicht mögliche Nullobjektreferenzen vermeiden zu helfen, da jquery als null zurückgibt Objekt, sondern die Arbeit mit dem Elemente aus .get (0) möglicherweise nicht so leise scheitern ... Sie können ganz einfach überprüfen, ob die Leinwand zuerst gefunden wurde, bevor .get (0) wie

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

das Skript funktioniert, bevor er feststellt, "Leinwand"

$(document).ready(function() { 
    ctx = $("#canvas"); 
});