私が作ろうとしているのは単純なjqueryウィザードです.4つのステップがあり、前と次のボタンがあります. 次のステップに応じて、次をクリックすると、線が金色で塗りつぶされ、その後も円が塗りつぶされます。したがって、ステップ 2 で次をクリックすると、円 2 から円まで線が塗りつぶされます。 3. などなど…要素ごとに 1 つずつ、5 つの関数でなんとかできましたが、もっと単純な 1 つの関数でできると確信しています。コードは次のとおりです。
$(document).ready(function () {
$('.next').click(function () {
if ($('.sirina').parent().prev('.krug').hasClass('stiglo')) {
console.log(this);
$('.sirina').animate({
width: '150px'
}, 1000, function () {
$(this).parent().next('.krug').animate({
borderTopColor: '#E3B009',
borderBottomColor: '#E3B009',
borderLeftColor: '#E3B009',
borderRightColor: '#E3B009'
}, 1000).addClass('stiglo');
});
}
});
});
http://jsfiddle.net/Frenki/LbssU/3/
ここで、console.log の後に問題が発生します。ここでは、すべての「.sirina」クラスをアニメーション化していますが、以前の div に関数「if」内の要素であるクラス「stiglo」があるクラスではありません。しかし、「this」を使用すると、if 関数内のクラスではなく、「次の」クラスを参照します。
これがすべて理にかなっていることを願っています:)