• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:jQuery bxSlider でのアニメーション)

jQuery bxSliderでのアニメーションは正常に動作しない

このQ&Aのポイント
  • jQueryのbxSliderを使用して、6枚のスライドギャラリーを作成しています。
  • スライド後にオブジェクトのフェードをするために、onAfterSlide関数を使用しています。
  • 1枚目から5枚目では正しくアニメーションが実行されますが、最後のスライドでアニメーションが機能しません。コードを修正する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.3

#2です。 jsをDLして確認してみました。 bxSliderはリストの前と後ろに、最初と最後の要素をコピーして付け加えていますね。 スライドした時に連続して見えるようにするためでしょう。 そのため、id指定しても2つある要素の片方にしか実行されないみたいなので、消えないというのが原因みたい。 ところで、ご提示のソースでは全部のdivにposition:absoluteが指定されていますけれど、これだと完全に表示位置が重なってしまうのでスライドしないのと、親の要素(bxSliderが作成するラッパー)にoverflow:hiddenが指定されているのでそもそも表示されなくなってしまうと思いますけれど… それなので、多分、これは何かの間違いか、liにposition:relative指定があるなどと仮定して以下の回答をしています。 (全体が不明なので、推測ですけれど) イベント処理の部分を以下のようにすれば、ご希望のようになりませんか? (なさりたいことが、よくわかりませんでしたので、また、見当違いの回答かも) onAfterSlide: function(c, t, o){ $("#slider1 li div").hide(); $("div", o).fadeIn("slow"); } *hide()でdisplay:noneになっていても、要素のwidthからpositionを計算しているみたいなので、#2の回答は関係なかったですね。

soweit
質問者

補足

ご教授いただき誠にありがとうございます、 liにはposition:relativeが指定されていますので、 各スライドが移動した後に、#slider1 li divがアニメーションしてくれました。 希望通りのアニメーションになってくれた思います。 最後のスライドが消えなかったのは、 id指定しても2つある要素の片方にしか実行されないからなのですね。 さらに一点解決したいと思う動きがあります。 例えば、下に配置しておりますclass="thumbs"の各サムネイルをクリックして、 連続して同じボタンをクリックすると、#slider1 li divのアニメーションがまた再生してしまいますので、各スライド後#slider1 li divが最初の一度だけ、アニメートする事は可能なのでしょうか? 勉強と経験不足で分からないのですが、$('.thumbs a').click(function(){ にreturn false;があるので、一度だけアニメーションするという認識だったのですが。 また、$("div", o)という記述がちょっと分からないので、調べてみます。 ありがとうございます。

その他の回答 (2)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

ちゃんと調べてないので、想像の域での回答ですが… 要素をhide()すると、多分、display:none に設定されると想像しますが、それが原因ではないですか? 「非表示」にするのに visibility:hidden を利用すればいけそうな気がしますけれど…

soweit
質問者

補足

ご返答ありがとうございます。 $("#block6").css({visibility:"hidden"}); としてみましたが、6番目だけ#block6の表示が消えませんでした。 他によい記述方法があるのでしょうか。

  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.1

if(currentSlide の条件に最後を動作させる条件がありません。 6枚あるので、0 から 5まで必要です。

soweit
質問者

補足

ご返答ありがとうございます。 if(currentSlide==5){ $("#block6").fadeIn("slow"); }else{ $("#block6").hide(); } を記述しても、最後のスライドのアニメーションが行われません。 記述が間違っておりますでしょうか?

専門家に質問してみよう