2

編集:このコードは正常に機能し、divが互いに積み重ねられていることを見逃し、視覚的なフィードバックにだまされました:(すみません。

私はここstackOverflowで各質問を検索し、jqueryドキュメントを読んでいますが、このスニペットがdivの1つに「バー」を配置しているだけなのはなぜかわかりません。ここで何が欠けていますか?すべての例は次のように機能するようです。

<div class="foo"></div>
<div class="foo"></div>

$(".foo").each(
  function() {
    $(this).append("bar");
  }
);

すべてのfooクラス要素を選択し、それぞれで繰り返します。各関数で、これは現在の要素ですよね?しかしそうではないようです...私は何が間違っているのですか?

私も試しました:

function(index, element) {$(element)など同じ結果。

4

2 に答える 2

6

インデックスと要素のパラメータを使用して関数を提供する必要があります。これにより、jQueryが選択したオブジェクトを反復処理できるようになります。

これは、ドキュメントの準備ができて初めて実行できるため、準備ができていることを確認するか、準備ができていることを確認してください

 <div class="foo"></div>
 <div class="foo"></div>

<script type="text/javascript">
$(document).ready(function(){

    $(".foo").each(function(index, element) {
        $(element).append("bar");
      }
    );
});
</script>
于 2012-08-12T09:48:18.263 に答える
1

前述のように、コードと代替の短いバージョン (pimvdb質問のコメントで述べたように) は完全に正常に動作します。

デモを見る

コードが にない$(document).ready(function(){});か、jQuery ライブラリへの参照が見つからないという問題が発生している可能性があります。

.ready()内にコードを配置すると、スクリプトが実行される前に DOM が完全に読み込まれます (画像を除く)。

于 2012-08-12T09:58:41.383 に答える