JQuery селекторы, дающие противоречивое поведение - PullRequest
4 голосов
/ 21 апреля 2011

Может кто-нибудь объяснить следующее поведение?

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

Ответы [ 3 ]

10 голосов
/ 21 апреля 2011

$('#myCanvas') - это jQuery-объект . $('#myCanvas')[0] является элементом DOM .

width () и height () - это методы, предоставляемые объектами jQuery. Вы не можете вызывать их для элементов DOM, потому что они не реализуют их (пока).

Аналогично, getContext () - это метод, предоставляемый элементом <canvas> DOM, и объекты jQuery его не поддерживают.

3 голосов
/ 21 апреля 2011

$('#myCanvas') возвращает объект jquery, а $('#myCanvas')[0] возвращает элемент HTML / DOM.


Аналогичным образом, $(selector).eq(0) возвращает первый элемент в списке как объект jquery, тогда как$(selector).get(0) возвращает элемент HTML / DOM.

0 голосов
/ 21 апреля 2011

getContext - это не функция jquery, это функция элемента. width и height являются функциями jquery, которые вызываются для объекта jQuery.

См. Также: Создание динамического холста jQuery, $ ctx.getContext не является функцией

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...