bxSliderのカスタムページャを作成しました。私はクリックされたときにオリジナルの灰色img
をカラー画像に変更し、クラス「緑」を取得したいと思います。クリックされたページャは、クラス「緑色」およびカラー画像を有する一方で、他のページャを元のグレー画像として維持したい。removeClassを使用してイメージsrcを元のイメージに戻す
元の灰色のimg
を緑に置き換え、兄弟の「緑」クラスを削除することができましたが、「緑」クラスが兄弟から削除されても、 img
の色は、元の灰色に戻るのではなく、removeClass("green")
が機能していない場合と同じです。
HTML:
<ul id="slidePager">
<li class="col-md-2 b-conts1">
<a href="#" data-slide-index="0">
<img src="img/benefit-lowcost-g.png" class="b-cost" alt="low cost icon" >
</a>
</li>
<li class="col-md-2 b-conts2">
<a href="#" data-slide-index="1">
<img src="img/benefit-logistic-g.png" class="b-logistic" alt="logistics icon" >
</a>
</li>
</ul>
のjQuery:
$(function(e){
$('.b-conts1').on('click', function(e){
e.preventDefault();
$(this).addClass('green').siblings().removeClass('green');
if($(this).hasClass('green')){
$('.b-cost').attr('src','/img/benefit-lowcost-c.png');
} else {
$('.b-cost').attr('src','/img/benefit-lowcost-g.png');
};
});
$('.b-conts2').on('click', function(e){
e.preventDefault();
$(this).addClass('green').siblings().removeClass('green');
if($(this).hasClass('green')){
$('.b-logistic').attr('src','/img/benefit-logistic-c.png');
} else {
$('.b-logistic').attr('src','/img/benefit-logistic-g.png');
};
});
});
'()( '緑' $(この).hasClassが)'要素の兄弟を参照していない場合 - その条件は常に評価しますその段階で '$(this)'がすでに '.green'クラスを持ち、' else'ブロックの '.attr()'メソッドが兄弟要素上で実行されることはないので( 'スコープ内の要素である '$(this)'で実行されます)。 – UncaughtTypeError