Say Mam następujący element:Jaki obiekt pojawia się w konsoli jako [obiekt tekstowy]?
<p id="thingy">Here is some <em>emphasized</em> text!</p>
w konsoli JavaScript, Przyniosę jej zawartości z jQuery:
> var theContents = $('<p id="thingy">Here is some <em>emphasized</em> text!</p>').contents();
theContents
jest tablicą, która wygląda następująco:
> theContents
["Here is some ", <em>emphasized</em>, " text!"]
Jak dotąd tak dobrze; wydaje się być tablicą, w której elementy są łańcuchami znaków, a element 1
jest obiektem jQuery. Jeżeli wyjście Właśnie pierwszy element, to wydaje się potwierdzać moje przypuszczenia:
> theContents[0]
"Here is some "
Jednak gdy próbuję łączyć go z innym ciągiem, widzę, że jestem brakuje pewne zrozumienie:
> 'Hello! ' + contents[0];
"Hello! [object Text]"
Tak więc zmienna wygląda jak ciąg znaków, ale w rzeczywistości jest to jakiś obiekt. W tym przypadku obiekt jQuery w środku nie pojawia się jako zwykły obiekt; pojawia się jako surowy znacznik.
Another question odnosi się do tego samego problemu, ale tak naprawdę go nie wyjaśnia. Odkryłem, że mogę użyć contents[0].textContent
, aby rozwiązać mój prawdziwy problem, ale to nadal nie pomaga mi zrozumieć dokładnie, co się tutaj dzieje. Czy ktoś może wyjaśnić mi szczegółowo, dlaczego wszystko to zachowuje się tak, jak jest?
+1: Szybka demonstracja: http://jsfiddle.net/fwysq/2/ –