0

javascript/jquery を使用してスライドショーをゼロから作成しています。スライドショーの下に動的にページネーションを数字として追加しています。私が望むのは、アクティブなスライドが何であれ、それぞれのページネーション番号は、またはactiveという変数にキャッシュされる、というクラスを追加することによって強調表示する必要があるということです。正しいセレクターを使用してそれらを特定しているにもかかわらず、何らかの理由で何も起こりません。this.activeo.active

ここに私のコードがあります: http://jsfiddle.net/A3rQS/

o.paginationItemと呼ばれる関数のステートメントを見ることができますfadingFX()。見つからないのに何が悪いのかわからない。

誰か助けてください...?

どうもありがとう

4

3 に答える 3

2

コードを読み間違えていない限り、次の行でpaginationItem onceの値を設定しているだけです。

this.paginationItem = this.pagination.find('li');

これは動的ではありません。つまり、呼び出しの結果が変更されたときに更新されないということです。単純に、そのコード行が実行されたときthis.pagination.find('li')の値に設定されます。変更したい場合は、そのコード行を再度呼び出す必要があります。

于 2012-11-26T10:22:17.787 に答える
1

これが起こることです:

  • SlideshowModの新しいインスタンスを作成します
  • 一連の変数がそのインスタンスに割り当てられます(スライド、コントロール... pagination、paginationItem ...)
  • 現時点では.pagination、ページに要素がないためpaginationpaginationItemそれらが何であるかを参照していません
  • メソッドを呼び出しstart()、その中でメソッドを呼び出しaddPagination()ます
  • あなたの内部は要素addPaginationを作成し、.paginationそれをDOMに追加しています
  • その要素への参照を取得できるのは今だけです(最終的にDOMにあるため)。したがって、これは変数paginationを割り当てる必要がある瞬間です。paginationItem
于 2012-11-26T11:10:52.437 に答える
1

あなたの問題は、長さ0を返すo.paginationItemにネストされたjqueryオブジェクトでした。セレクター自体に戻すと、機能しました:

http://jsfiddle.net/A3rQS/4/

        console.log(o.paginationItem.find('.active'));
        console.log($('.pagination').find('.active'));

2 つの jQuery オブジェクトの違いがコンソールに表示されます。問題は、o.paginationItem が作成された瞬間と、jquery がそれをどのように更新するか (または更新しない可能性が高いか) に起因すると思います。

関数が呼び出されるたびにコレクションを更新することをお勧めします。また、間違った範囲で i-1 値を返す activeSlide.index() のインデックスの問題もあります。インデックスを追跡できない場合は、それらを rel html 属性に書き込んでみてください。

于 2012-11-26T10:34:44.977 に答える