1

誰か説明してくれませんか、なぜeach(function(i) what does (i)do? はどのようなi文字でもよいように思えます。なぜ(i)必要なのですか? よくわかりません。どうもありがとう

<body>
    <div>Click here</div>
  <div>to iterate through</div>
  <div>these divs.</div>
<script>
    $(document.body).click(function () {
      $( "div" ).each(function (i) {
        if ( this.style.color != "blue" ) {
          this.style.color = "blue";
        } else {
          this.style.color = "";
        }
      });
    });
</script>
4

6 に答える 6

3

コールバック関数の最初のパラメーターは、ループ内の反復のインデックスです。つまり、ループ カウンターです。あなたの場合、それを使用していないので、まったく必要ありません:

$("div").each(function() {
  if (this.style.color != "blue") {
    this.style.color = "blue";
  } else {
    this.style.color = "";
  }
});

2 番目のパラメーターは、現在の反復の要素です。つまり、参照している要素と同じthisです。の代わりにそのパラメーターを使用できますthis。もちろん、2 番目のパラメーターを使用するには、使用しない場合でも、最初のパラメーターも指定する必要があります。

$("div").each(function(i, e) {
  if (e.style.color != "blue") {
    e.style.color = "blue";
  } else {
    e.style.color = "";
  }
});
于 2013-01-08T00:37:11.863 に答える
1

i、j、kは整数の標準表記です。これは当然、各要素のインデックスが整数である列挙可能なリスト(配列やノードリストなど)をループするために使用されます。覆い隠されたループの場合、最初のレベルはi、2番目のjなどを使用します。

これは単なる慣例であり、実際には、コードを読みやすくするjQueryドキュメントに示されている「インデックス」などの他の名前を使用できます。欠点は、スクリプトが長くなることですが、今日のミニファイ/圧縮の普及により、これは問題にならないはずです。

もちろん、ループ内でインデックスを参照しない場合は、省略できます。

于 2013-01-08T00:48:52.760 に答える
1

コールバック関数で好きなようにiを呼び出すことができます。各メソッドは、各セレクター(この場合はすべてのdiv)に一致するオブジェクトごとにそのコールバックを呼び出し、それをコールバックパラメーター(i)または呼び出したものに渡します。反復ごとにこれらの各オブジェクトを操作できます。

私が自分自身を明確にしたことを願っています、

乾杯

于 2013-01-08T00:32:01.303 に答える
1

まあ、これがあなたが求めているものかどうかはわかりませんが、ドキュメントによると

.each( function(index, Element) )

これが署名なのでi、あなたの場合は現在のアイテムのインデックスの引数になります。したがって、divに10個ある場合、関数が呼び出されるたびに、divのi番目の要素のインデックスiが渡されます。

于 2013-01-08T00:32:09.347 に答える
1

.each適用される要素のコレクションを反復処理するために使用されます。最初のパラメーター(このi例では、)は、コレクション内の現在の要素のインデックス値を提供します。

完全な署名は次のとおりです。

.each( function(index, Element) ) 

次のオーバーロードを使用している間:

.each( function(index) ) 

また、関数仕様でパラメーターにどのように名前を付けるか(、、、、など)は実際には関係ありません。indexインデックス値は、そのパラメーターに渡されます。iblahparam1

この例では、このパラメーター値はユースケースでは必要ないため、追加のメリットはありませんが、必須パラメーターであるユースケースはたくさんあります。

于 2013-01-08T00:32:32.363 に答える
1

それは任意の名前にすることができます。これは、関数で役立つ場合に備えて、アイテムのインデックスです。jQueryのドキュメントで説明されています。http://api.jquery.com/each/

于 2013-01-08T00:31:03.877 に答える