Расширение HTMLElement - PullRequest
       2

Расширение HTMLElement

1 голос
/ 11 октября 2011

с помощью jQuery можно сделать что-то вроде этого: $("div")[5].animate()

Мне кажется, что разработчики каким-то образом расширили HTMLElement, используя prototype.

Myвопрос сейчас: как они это сделали?Так как HTMLElement.prototype не работает в IE, например, мне интересно, есть ли кросс-браузерный метод для прототипирования HTML-элементов.

Спасибо!

Ответы [ 3 ]

2 голосов
/ 11 октября 2011

функция фабрики jQuery (jQuery() или $()) не возвращает узел DOM .

Функция фабрики jQuery возвращает новую jQuery.init экземпляр, который действует очень похоже на массив.Вместо расширения прототипа любого узла DOM в jQuery.fn

просто добавляется больше функций. Если функция связана с селектором jQuery, она обычно применяется к всем элементам, содержащимся в jQuery..init instance.

Я настоятельно рекомендую прочитать прокомментированный источник jQuery , чтобы вы могли точно видеть, что происходит за кулисами.

2 голосов
/ 11 октября 2011

Вы не можете расширять эти вещи в IE; IE просто не реализует интерфейс DOM таким образом. Вот почему Prototype заставляет вас «оборачивать» элементы, которыми вы хотите манипулировать, этими дополнительными методами.

1 голос
/ 11 октября 2011

Обратите внимание, что $('#book') !== document.getElementById('book').
Первый - это объект jQuery, который ссылается на элемент dom и может быть расширен, тогда как второй на самом деле является элементом dom.

...