Все Объекты jQuery Уникальны

Важная подробность относительно поведения "обертывания" - то, что каждый jQuery-обернутый объект является уникальным. Это - истинно даже если объект создавался с тем же самым селектором или содержит ссылки на те же самые элементы DOM.

Создание двух объектов jQuery для того же самого элемента:

var logo1 = $( "#logo" ); var logo2 = $( "#logo" );

Хотя logo1 и logo2 создаются одикановым образом (и обертывают тот же самый элемент DOM), они не являются тем же самым объектом. Например:

Сравнение объектов jQuery:

Пример

alert( $( "#logo" ) === $( "#logo" ) ); // показывает "false"

Попробуйте Сами »

Однако, оба объекта содержат тот же самый элемент DOM. Метод .get() полезен для тестирования, если у двух объектов jQuery тот же самый элемент DOM.

Сравнение элементов DOM:

Пример

var logo1 = $( "#logo" );
var logo1Elem = logo1.get( 0 );

var logo2 = $( "#logo" );
var logo2Elem = logo2.get( 0 );

alert( logo1Elem === logo2Elem ); // выводит "true"

Попробуйте Сами »

Многие разработчики снабжают префиксом $ имена переменных, которые содержат объекты jQuery, чтобы проще их отличать. Нет ничего волшебного в этой практике – это только помогает некоторым людям следить за тем, что содержат различные переменные. Предыдущий пример мог быть переписан, чтобы следовать этому соглашению:

Сравнение элементов DOM (с более читабельными именами переменных):

var $logo1 = $( "#logo" ); var logo1 = $logo1.get( 0 ); var $logo2 = $( "#logo" ); var logo2 = $logo2.get( 0 ); alert( logo1 === logo2 ); // выводит "true"

Этот код функционирует аналогично примеру выше, но он является немного больше четким для чтения.

Независимо от используемого соглашения о присвоении имен очень важно делать различие между объектом jQuery и собственными элементами DOM. Собственные методы DOM и свойства не присутствуют в объекте jQuery, и наоборот. Сообщения об ошибках, такие как "event.target.closest is not a function" и "TypeError: Object [object Object] has no method 'setAttribute'" указывают на наличие этой распространенной ошибки.

Далее: Тестирование Типа JavaScript

Смотрите также
Комментарии
Написать

(обязательно)

(обязательно)

Это не спам (обязательно)