1

http://jqfundamentals.com/chapter/jquery-basicsからの明示的な反復の次の例を見ています。

$( 'li' ).each(function( index, elem ) {
  // this: the current, raw DOM element
  // index: the current element's index in the selection
  // elem: the current, raw DOM element (same as this)
  $( elem ).prepend( '<b>' + index + ': </b>' );
});

コメントはelem未加工の DOM 要素として参照されますが、コードは.prepend()on を呼び出しますelem

私はjQueryを使い始めたばかりですが、生のDOM要素ではなく、jQueryオブジェクトでのみjQueryメソッドを呼び出すことができると理解しています。私は誤解していますか?

4

7 に答える 7

5

コードはprependonを呼び出すのではなく、jquery オブジェクトにするときelemに呼び出します。$(elem)

于 2013-03-18T15:02:54.083 に答える
3

生のDOM要素をjqueryオブジェクトに再度変換しています..の最初の$記号を参照してくださいelem. elem生です $(elem)がjqueryオブジェクトであるため、利用可能な任意のjQuery関数(メソッド)prependを1つとして使用できます

   $( elem ).prepend( '<b>' + index + ': </b>' );
//-^-- here this $ sign
于 2013-03-18T15:03:26.867 に答える
3

elem生の DOM 要素です。elem$(elem)をラップすることで、生の DOM 要素から jQuery オブジェクトを作成しています。jQuery を使用すると、これを行うことができます。.prepend()次に、 から作成された jQuery オブジェクトを呼び出していますelem

于 2013-03-18T15:04:25.243 に答える
3

これは役に立つかもしれません..

var test = document.getElementById('test') //returns a HTML DOM Object
var test = $('#test') //returns a jQuery Object
var test = $('#test')[0] //returns a HTML DOM Object
于 2013-03-18T15:41:13.317 に答える
1

上記の例の「elem」は、CSS と同様に、任意のタグ (h1、p、body、タグの組み合わせ、id またはクラスへの特定の参照) にすることができます。次に、「先頭に追加」は、その要素に対して実行されるアクションです。この場合、prepend アクションは 1 つのパラメーターを受け取ります。これは、選択した「elem」に一致するページ上のすべての要素の最初の子要素として、html に動的に配置される別の要素です。

于 2013-03-18T15:05:23.847 に答える
1

jQuery は「ラップされた」要素 (jQuery オブジェクト) を作成するため、おそらくこれで洞察が得られるでしょう。

$('li').each(function (index, elem) {
    alert(elem === this); // true
    alert($(this) === $(elem)); // false
    alert(elem.tagName + $(elem).tagName); // LI undefined
    alert(typeof elem + typeof $(this));// object object
    alert(elem.tagName ===  $(this).prop('tagName')); // true
});

2 番目のアラート = false であるため、同じ要素を「参照」していても、$(this) と $(elem) は同じラップされたオブジェクトではないことに注意してください。「生の」要素には .tagName がありますが、jQuery でラップされたオブジェクトにはありません。

あなたのためにそう

$(elem).prepend('<b>' + index + ':</b>');

jquery はラップされた elem ( $(elem)) を受け取り、新しいラップされた 'b' 要素の先頭にインデックスと ":" 文字をコンテンツ テキストとして追加します。

編集: tagName のプロパティの例を jQuery オブジェクトに追加し、追加の例と説明を追加しました。

于 2013-03-18T15:20:24.970 に答える
0

Prototypeとは異なり、jQuery はネイティブ オブジェクトを拡張しません。$これが、関数を使用して jQuery でラップされた関数を取得する必要がある理由です。

于 2013-03-18T15:04:08.077 に答える