Скажем, у меня есть следующий элемент:
Here is some emphasized text!
В консоли Javascript я получу его содержимое с помощью jQuery:
> var theContents = $('Here is some emphasized text!
').contents();
theContents
теперь это массив, который выглядит так:
> theContents
["Here is some ", emphasized, " text!"]
Итак далеко так хорошо; похоже, это массив, где элементы 0
и 2
— строки, а элемент 1
— объект jQuery. Если я выведу только первый элемент, это, кажется, подтвердит мою догадку :
> theContents[0]
"Here is some "
. Однако, если я попытаюсь соединить его с другой строкой, я увижу, что мне не хватает некоторого понимания:
> 'Hello! ' + contents[0];
"Hello! [object Text]"
Итак, эта переменная выглядит как строка, но она на самом деле является каким-то объектом. Если на то пошло, объект jQuery в середине также не отображается как обычный объект; он отображается как необработанная разметка.
Другой вопрос относится к той же проблеме, но не объясняет ее. Я обнаружил, что могу использовать contents[0].textContent
для решения моей реальной проблемы, но это все еще не помогает мне понять, что именно здесь происходит. Может кто-нибудь объяснить мне подробно, почему все это ведет себя так, как есть?