2011-04-21 19 views
4

任何人都可以解釋以下行爲嗎?jQuery選擇器給出不一致的行爲

var ctx = $('#myCanvas').getContext("2d");  //doesnt work 
var ctx = $('#myCanvas')[0].getContext("2d"); //works 
canvasWidth = $('#myCanvas').width();   //works 
canvasHeight = $('#myCanvas').height();   //works 
canvasWidth = $('#myCanvas')[0].width();  //doesnt work 
canvasHeight = $('#myCanvas')[0].height();  //doesnt work 
+0

我可以看到您的html嗎? – mcgrailm 2011-04-21 14:32:55

回答

10

$('#myCanvas')jQuery object$('#myCanvas')[0]DOM element

width()height()是由jQuery對象公開的方法。你不能在DOM元素上調用它們,因爲它們沒有實現它們(到目前爲止)。

同樣,getContext()是由DOM元素公開的方法,jQuery對象不支持它。

+2

詳細說明,getContext()是一種DOM方法,而width()和height()是jQuery方法。 – 2011-04-21 14:32:49

+1

在你的JS控制檯運行'console.dir($('#myCanvas'));'你可以看到這些人在談論什麼。 – Treffynnon 2011-04-21 14:35:14

3

$('#myCanvas')返回一個jquery對象,而$('#myCanvas')[0]返回HTML/DOM元素。在列表中而$(selector).get(0)一個jquery對象


以類似的方式,$(selector).eq(0)返回第一項返回HTML/DOM元素。