私は:ここでは
はjsfiddle(なぜすべてのdivがここに表示されているかわからない、最初の1が正しいれない唯一の生きる)ボタンの
例ですマークアップとJSを少し修正しましたが、このコードはタブの要件を満たし、インラインJSの一部を削除する必要があります。
本質的には、各タブボタンの属性にアクティブな画像srcを格納します。
<div id="tab1" class="tab" style="..."
data-image-active="./images/button1-active.jpg"
data-image="./images/button1.jpg">
<img src="./images/button1.jpg" />
</div>
次に、各タブボタンのためにあなたのJavaScriptでアクティブ状態を設定するためにこれを使用しています。私はクリック処理のためのあなたの現在のコードをこのループにも移動しました。
$(document).ready(function(){
var $contents = $('.tab-content');
$contents.slice(1).hide();
$('.tab').each(function() {
$(this).hover(function() {
setButtonActive($(this));
}, function() {
if (!$(this).hasClass('active')) {
setButtonInactive($(this));
}
});
$(this).click(function() {
resetAllButtons();
setButtonActive($(this));
$(this).addClass('active');
var $target = $('#' + this.id + 'show').show();
$contents.not($target).hide();
})
});
});
function setButtonActive(button) {
var img = button.find('img'),
imgSrc = button.attr('data-image-active');
img.attr('src', imgSrc);
}
function setButtonInactive(button) {
var img = button.find('img'),
imgSrc = button.attr('data-image');
img.attr('src', imgSrc);
}
function resetAllButtons() {
$('.tab').removeClass('active').each(function() {
setButtonInactive($(this));
});
}
出典
2016-05-31 09:46:57
Bat
私は次のボタンをクリックしたときに唯一のことは、前のものがクリックされるまでクリックされたままであることです。他の1つはクリックされますか? – HTMellis
私は今編集しています。元のsrcをマークアップに追加してリセットできるようにする必要があります。また、それをいくつかの関数にリファクタリングしました。 – Bat
偉大な仕事は、あなたの助けに完全に感謝します! – HTMellis