1

私は本を​​読んでいましたが、スライスメソッドの場合、次のような例が得られます:

$('*').slice(2,3);

私には、最初にページ上のすべての要素を選択してから、3番目の要素を返すと言っているように見えます。

$('*').get(2) しかし、その本は、これは私がこれまで何も学んでいないと感じて、私を混乱させるものとは異なることに注意してください. 後者を言っている

ラップされたセットの 3 番目の「要素」を返しますが、最初の要素はその要素を含むラップされたセットを返します。

違いがわかりません。ラップされたセットは要素とは異なりますか?

4

3 に答える 3

4

はい、違いがあります。

これは DOM 要素です。

var element = document.getElementById("foo");

この要素は、DOM ( MDN リファレンス)によって指定されたプロパティと関数を公開します。たとえば、それが入力要素であるとすると、 でその値を取得できますelement.value

これは、「ラップされたセット」とも呼ばれる jQuery オブジェクトです。

var wrapped = $(element);

この特定のラップされたセットには、上記の要素が 1 つだけ含まれています。ラップされたセットは、 jQuery で定義されたプロパティと関数を公開します。たとえば、 でその値を取得できますwrapped.val()

本のメモが何を議論しているか見てみましょう。

最初の引用:

後者は、ラップされたセットの 3 番目の「要素」を返します

これは、 の戻り値が.get()ラップされた要素の 1 つであることを意味します。これを使用すると、jQuery はラップしていた要素の 1 つへの参照を渡します。API ドキュメントには、結果が DOM 要素であることが明示的に記載されています。

jQuery オブジェクトに一致する DOM 要素の 1 つを取得します。

2番目の引用:

しかし、最初のものは要素を含むラップされたセットを返します

これは、 の戻り値.slice自体が、ソース ラップ セットがラップしていた要素の一部のみをラップするラップ セットであることを意味します。API ドキュメントでは、結果は元のサブセットをラップするラップされたセットであると説明されています。

一致した要素のセットを、インデックスの範囲で指定されたサブセットに減らします。

于 2013-05-29T12:50:24.267 に答える
1

'slice' 関数を使用すると、セット (複数のオブジェクト) を取得でき、'get' 関数を使用すると 1 つの要素しか取得できません。

しかし重要なことは、'get' 関数が DOM の要素を返すことです (これは jquery オブジェクトではありませんが、slice 関数は jquery オブジェクトを返します。

たとえば、背景色を変更したい場合:

$("*").get(8).style.backgroundColor = "red";
$("*").slice(8,9).css("background-color", "red");
于 2013-05-29T13:06:32.490 に答える
0

スライスを使用する最初のオプションは、3 番目の要素だけでなく、2 番目以降のすべての要素を返します。3 を渡すと、3 番目の要素のみが返されます。

ただし、渡す$('*').slice(2,5);と 3 番目、4 番目、5 番目の要素が$('*').get(2)返され、2 番目の要素のみが返されます。1 つの要素のみを返すため、スライスとして開始する最初の要素を設定するためのパラメーターは必要ありません。

于 2013-05-29T12:57:11.207 に答える