說我有以下元素:什麼樣的對象在控制檯中顯示爲[object Text]?
<p id="thingy">Here is some <em>emphasized</em> text!</p>
在JavaScript控制檯,我會得到它的內容與jQuery:
> var theContents = $('<p id="thingy">Here is some <em>emphasized</em> text!</p>').contents();
theContents
現在是一個數組,看起來像這樣:
> theContents
["Here is some ", <em>emphasized</em>, " text!"]
到目前爲止這麼好;它似乎是一個數組,元素0
和2
是字符串,元素1
是一個jQuery對象。如果我只輸出第一個元素,它似乎也印證了我的猜測:
> theContents[0]
"Here is some "
但是,如果我嘗試用另一個字符串來連接它,我看到,我缺乏一定的瞭解:
> 'Hello! ' + contents[0];
"Hello! [object Text]"
所以這個變量看起來像一個字符串,但它實際上是某種對象。就此而言,中間的jQuery對象也不會顯示爲常規對象;它顯示爲原始標記。
Another question引用了同樣的問題,但實際上並沒有解釋。我發現我可以使用contents[0].textContent
來解決我真正的問題,但這仍然不能幫助我理解到底發生了什麼。有人可以向我詳細解釋爲什麼所有這些行爲都是這樣嗎?
+1:快速示範:http://jsfiddle.net/fwysq/2/ – 2012-04-02 15:36:41