Как JavaScript узнает, где находится элемент DOM? - PullRequest
1 голос
/ 27 июля 2010

Я писал код в jQuery, например:

$(".middleContent").not(this).slideUp();

(это = текущий активный элемент .middleContent)

И мне было интересно, откуда JavaScript знает индекс элементов в DOM.

Я знаю, что каждый объект уникален, но если у вас есть несколько элементов одного класса, как он различает их? Для чего нужен его индекс в дереве всех элементов, например, как программа имеет адрес в ОЗУ?

Ответы [ 3 ]

2 голосов
/ 27 июля 2010

Я думаю, вы недооцениваете значение того, что элемент DOM должен быть уникальным .Это не только класс, имя тега или индекс в текущем родительском элементе, который идентифицирует элемент DOM.Каждый элемент DOM внутренне имеет уникальный идентификатор, который вам недоступен.Он используется браузером для внутренней организации DOM.На вашей странице могут быть сотни идентичных <div class="middleContent" /> элементов, каждый из которых имеет уникальный внутренний идентификатор.Если вы сравните один элемент DOM с другим, браузер всегда сможет определить, является ли он тем же элементом или элементом, который выглядит просто так.

this относится к одному конкретному DOMэлемент, поэтому jQuery может отфильтровать его из коллекции, казалось бы, похожих элементов.

2 голосов
/ 27 июля 2010

Каждый элемент DOM является индивидуальным и уникальным объектом. not выполняет сравнение с текущим контекстом выполнения (этим), чтобы убедиться, что любой элемент в массиве не равен this.

1 голос
/ 27 июля 2010

Элементы в DOM - это просто сами объекты, организованные в древовидную структуру, поэтому у них есть следующий и предыдущий братья и сестры на одном уровне, их собственный список детей, родитель. Отсюда вы можете обойти структуру дерева и манипулировать им.

Вы можете получить объект (ы) внутри объекта jQuery, используя индексную запись:

var caption = $('#caption');
var domElement = caption[0];

Тогда domElement будет содержать один из них .

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