2011-10-24 12 views
5

jQueryのブックマークレットをページに使用しているので、コンソールからjQuery関数を呼び出すことができます。私はGoogle ChromeのWebkitのコンソールと同様のFirebugでこれを試してみましたコンソールのjQueryが正しく動作しない

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

:しかし、毎回私は、選択したオブジェクト上のjQueryの関数を呼び出し、私はエラーを取得します。

+0

ブックマークレットをクリックしていますか?使用しているブックマークレットや、入力した例のページにリンクできますか? – Whetstone

+0

すでにjQueryをロードしているページでこれを確認したので、ブックマークレットFYIとは思えません。 – HurnsMobile

答えて

9

を呼び出していないことをラップしてみてください。

jQuery("li")[0] 

これはDOMElementのではなく、jQueryオブジェクトとしてあなたの第一liを返します。

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

これはDOMElementのではなく、jQueryオブジェクトとして第一liの第一子を返します。

.html() 

この関数は、jQueryオブジェクトに対してのみ機能します。 DOMElementsでは、.innerHTMLプロパティを使用できます。

DOMElementsを扱う代わりに、jQueryオブジェクトの使用を続けることをお勧めします。代わりにこれを使用してみてください:

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

+1、非常にいい例 – JaredPar

+0

なぜ落選ですか? **編集**:私は理由を見る。 'children(0)'は 'children()。eq(0)'だったはずです。修正: - P –

+1

@Rocketそれは私のdownvoteだった。すみません、間違いです。 +1のトラブル! – genesis

3

てみ

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

またはより良い1

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

または別の1

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

も、この1つは動作しますが、次の

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

いいえ、 '[0]'はDOMオブジェクトを返します。 – pimvdb

+0

エラーは ''子要素ではない 'html'ではありません – JaredPar

+0

' jQuery( "li")[0] 'はjQueryオブジェクトではなく、DOMElementであるため、' children() '関数はありません。 –

5

DOMオブジェクトchildren[0]のjQuery関数htmlを呼び出そうとしているようです。 jQueryオブジェクトにして、角括弧を使用するときは、もはや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を見ることなく私はより良い選択をお勧めすることはできませんが、安くて汚い修正はこれが.html()機能を持つjQueryオブジェクトにDOMオブジェクトの結果を変換します

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

だろう。

+0

ありがとう!それは意味をなさない、そしてそれは今働く! –

3

([]を使用して)jqueryオブジェクトの配列要素にアクセスすると、明らかにjqueryのメソッドを持たないDOMElementが返されます。代わりにeq()を使用します。

関連する問題