0

私のjqueryスキルは優れていません。私が通常行うことは、プラグインを使用して、最終的に何をする必要があるかを理解することです。

私が今行っていることは、スライドショー スクリプトを持っていることです。次のスライドがアクティブ/表示されたときに関数が実行されるようにします。その関数が行うことは、タイプが css (配列に設定されているタイプ) を持つ ID をチェックし、それにクラスを追加することです。私がこのようにしている理由は、タイプが何であるかに応じて、さまざまなことを拡張する必要があるためです。

私はいくつかの一般的なコードを持っていますが、自分が何をしているのかを理解するのに十分な知識がありません. ここに私がこれまでに持っているものがあります:

関数:

function doAnimate(index) {
      var item = $animations[index];

      for (var i = 0; i < item.length; i++) {
        var obj = item[i];
        if (obj['type'] = "css") {$(this).addClass('in');}
      };
    }

配列:

  var $animations = [
      [{
        ID: "s5-01",
        type: "css"
      }],
      [{
        ID: "s5-02",
        type: "css"
      }],
      [{
        ID: "s5-03",
        type: "css"
      }],
      [{
        ID: "s5-04",
        type: "css"
      }],
      [{
        ID: "#5-05",
        type: "css"
      }]
    ];

これはスライドショー スクリプトで、実行する場所は次のとおりです。

carousel.owlCarousel({
          ... cut stuff out that isn't important
          pagination:true,
          afterMove: function(elem) {
            doAnimate();
          }
        });

そして、これがこの特定のものをHTMLでどのように設定するかです

        <div class="slide" id="slide-05">
          <img id="s5-01" src="img1.png" />
          <img id="s5-02" src="img2.png" />
          <img id="s5-03" src="img3.png" />
          <img id="s5-04" src="img4.png" />
          <img id="s5-05" src="img5.png" />
        </div>

だから私はそれを持っています、そしてブラウザコンソールは言う: Uncaught TypeError: Cannot read property 'length' of undefined

私は基本的にちょっと迷っており、これを機能させるために何らかの支援が必要です。それは私が見ることができない基本的なものだと確信しています。

どんなアドバイスでも大歓迎です!

4

4 に答える 4

0

$animations[index] ではなく $('.animations:eq(index)') であるべきだと思います $animations は有効なセレクターではないためです。詳細については、このhttp://api.jquery.com/eq-selector/を確認してください

于 2013-10-25T05:28:34.950 に答える
0

この行を変更する必要があります:

if (obj['type'] = "css") {$(this).addClass('in');}

それには2つの問題があります。1 つ目は、if条件がor (比較)=ではなく (代入)を使用していることです。2 つ目は、 を使用しているということですが、参照するのは必要な要素ではありません。のプロパティに基づいて選択する場合は、次のようになります。=====thisthisidobj

if (obj['type'] === "css") {$('#' + obj.id).addClass('in');}

次に、コードのこのセクションで:

carousel.owlCarousel({
    // cut stuff out that isn't important
    pagination:true,
    afterMove: function(elem) {
        doAnimate();
    }
});

配列内の要素のインデックスを渡すには、その呼び出しをdoAnimate()変更する必要があります$animations

于 2013-10-25T10:10:59.797 に答える