次のHTMLマークアップがあります。jQueryで次の画像を選択
<div class="caption">
<img class='active' alt='My Caption' src='path/to/image' />
<div>My Caption</div>
</div>
<div class="caption">
<img alt='My Caption 2' src='path/to/image' />
<div>My Caption 2</div>
</div>
キャプションは、いくつかのJSを持つaltタグのDIV内に配置されています。
$('#slider img').each(function() {
$(this).wrap('<div class="caption"></div>').after('<div>' + $(this).attr('alt') + '</div>');
$('.caption').width($(this).width()).children('div').each(function() {
$(this).css({width: $(this).siblings('#slider img').width() -10, opacity: 0.5, display: 'block'});
});
});
私がいる問題は、私のイメージの「スライド」にしようとしたとき、それは前にうまく働いたが、今、私はいくつかの問題を抱えているキャプションを追加しました。ここで
が起こることになっているものです。
それは字幕なしでうまく働いたが、今、私はキャプションを持っていること、それはdivの上でアクティブなクラスを入れている、アクティブにクラスを設定し、画像を退色各画像を通過しますそこにはキャプションがあります。ここで
は私のJSある
function simpleSlider(){
var $active = $('#slider img.active');
if($active.length == 0) $active = $('#slideshow img:last');
var $next = $active.next('img').length ? $active.next()
: $('#slider img:first');
$next.css({opacity: 0.0})
.addClass('active')
.animate({opacity: 1.0}, 1000, function() {
$active.removeClass('active');
$active.css({opacity: 0.0});
})
}
は、どのように私は私のキャプションを言う代わりにdiv要素の、それは次の画像を選択するだろうか?
これはあまり意味がない場合は申し訳ありません。
ありがとうです。しかし私には別の問題があります。この機能を5秒ごとに呼び出して画像の「スライドショー」を作成しますが、最初の画像に戻ったときにフェードインしないだけでジャンプします。どんな考え? –
これはおそらく、アニメーションロジックがzポジショニングと組み合わされているためです。フェードインされる画像は、重ねて表示される不透明画像によって隠されます(「ポップ」します)。あなたは 'z-index'を使い慣れていますか? – m90
@ LukeBerry編集された答えとフィドルを参照してください。 – m90