2011-10-24 63 views
5

我在頁面上使用jQueryify小書籤,以便我可以從控制檯調用jQuery函數。但每次我調用所選對象jQuery的功能,我得到的錯誤:控制檯中的jQuery無法正常工作

"TypeError: jQuery("li")[0].children[0].html is not a function 
[Break On This Error] jQuery('li')[0].children[0].html(); 

我在螢火嘗試這個問題,以及谷歌Chrome的WebKit的控制檯。

+0

您正在點擊書籤,正確的?你能鏈接到你正在使用的書籤和一個你輸入的例子頁面嗎? – Whetstone

+0

剛剛在一個已經加載jQuery的頁面上確認了這一點,所以我不認爲它只是書籤小費。 – HurnsMobile

回答

9

用方括號當你不再使用jQuery對象的工作。

jQuery("li")[0] 

這將返回第一li作爲一個DOMElement,而不是一個jQuery對象。

jQuery("li")[0].children[0] 

這將返回第一li的第一個孩子作爲一個DOMElement,而不是一個jQuery對象。

.html() 

此函數僅適用於jQuery對象。對於DOMElements,您可以使用.innerHTML屬性。

我建議您不要使用DOMElements,而應該繼續使用jQuery對象。嘗試使用這個:

jQuery('li').eq(0).children().eq(0).html() 
+0

+1,非常好的例子 – JaredPar

+0

爲什麼選擇倒票? **編輯**:我明白了爲什麼。 「孩子(0)」應該是「孩子()。eq(0)」。修正:-P –

+1

@火箭它是我的downvote。我很抱歉,只是一個錯誤。 +1的麻煩! – genesis

3

嘗試以下

jQuery(jQuery("li")[0].children[0]).html(); 

或更好的

jQuery("li:eq(0)").children(':eq(0)').html(); 

或另一個

jQuery("li:eq(0)").children().eq(0).html(); 

即使是這樣一會工夫

jQuery("li").eq(0).children().eq(0).html(); 
+0

不,'[0]'返回一個DOM對象。 – pimvdb

+0

錯誤是關於'html'而不是'children' – JaredPar

+0

'jQuery(「li」)[0]'是DOMElement,而不是jQuery對象,因此沒有'children()'函數。 –

5

看起來你正試圖在DOM對象children[0]上調用jQuery函數html。嘗試包裹在一個jQuery對象,然後調用html

var temp = jQuery("li")[0].children[0]; 
var html = jQuery(temp).html(); 
+2

@genesis是的,這是一個DOM屬性。 https://developer.mozilla.org/en/DOM/Element.children – JaredPar

5

檢查的jQuery("li")[0].children[0]的結果,這是一個常規的DOM對象不是一個jQuery對象。沒有看到你的HTML,我不能推薦一個更好的選擇,但廉價和骯髒的解決將是

jQuery(jQuery('li')[0].children[0]).html();

這將轉換的DOM對象導致到一具有.html()功能的jQuery對象。

+0

謝謝!這是有道理的,它現在起作用了! –

3

訪問jquery對象上的數組元素(使用[])返回一個DOMElement,顯然沒有jQuery的方法。您可能想使用eq()代替。

相關問題