1

jQueryを学び始めましたが、jqueryメソッドを適用できない理由を知りたいです

この例では:

$('p')[0].html('salut !'); //for this instruction i got this error :
                           //"TypeError: $(...)[0].html is not a function "

これが機能している間:

$('body')[0].tagName.toLowerCase();

私は混乱していて、これら2つのケースの違いを知りたいです。

同じ問題の別の例を次に示します。

var listItems = $( 'li' );
var rawListItem = listItems[0]; // or listItems.get( 0 )
var html = rawListItem.html();
// Object #<HTMLInputElement> has no method 'html'

.eq()を使用してjqueryメソッドを使用する方法は次のとおりです。

var listItems = $( 'li' );
var secondListItem = listItems.eq( 1 );
secondListItem.remove();

これについていくつかの説明を提供してくれてありがとう。

4

2 に答える 2

3

jQueryオブジェクトは。とは完全に異なりますDOMElement

  • jQueryオブジェクトを使用すると、それらのjQuery操作を実行できます。html()、、、val()などeq()
  • DOMElementの...しないでください。それらはDOMElementsであり、jQueryオブジェクトではありません。

のドキュメントを.get()確認するとDOMElement、jQueryオブジェクトではなく、戻ってきたことがわかります。同じことが[0]等にも当てはまります。

eq()ただし、jQueryオブジェクトを返します。これにより、jQueryオブジェクトに対してjQuery操作を実行できます。

tagNameDOMElement属性であるため、DOMElementによって返されるsに対しては実行できget()ますが、によって返されるjQueryオブジェクトに対しては実行できませんeq()html()とで使用する場合は、逆にget()なりeq()ます。

DOMElementもちろん、を介してjQueryオブジェクトに任意のオブジェクトをラップすることができます。これにより、jQueryオブジェクト$()に対してjQuery操作を実行できます。

$($('p')[0]).html('salut !');

しかし、あなたの状況では、あなたは使用する必要がありますeq()

$('p').eq(0).html('salut !');
于 2013-01-08T13:35:26.290 に答える
2

それはあなたが練習することによって学んでいることを縫い合わせます、魔女は良いことです、それでここにいくつかの指針があります:

  • jQueryはオブジェクトを使用し、それらをラップすると$(...)オブジェクトを取得します
  • 配列ポインタを使用する場合$('p')[0]、ネイティブ配列が出力するものを常に取得するように、witchは文字列であるため、オブジェクトではありません

最初の要素をオブジェクトとして取得するには、3つの選択肢があります

var jQueryObj = $('p:first'); // using :first

また

var jQueryObj = $("p").eq(0); // using eq()

また

var jQueryObj = $( $('p')[0] ); // wrap it in a jQuery call

そして覚えておいconsoleてください、javascriptをテストするときは常にあなたの親友です

ここに画像の説明を入力してください

于 2013-01-08T13:41:29.660 に答える