場景:我創建了一個簡單的顯示/隱藏功能,允許用戶點擊IMG並顯示後續內容。使用.removeClass()的條件語句;在.show()中;和.hide();功能
預期行爲:當用戶點擊IMG,.service-img
,我想選擇的IMG內容,.service-content
,以.addClass('fadeIn');
而.removeClass('fadeIn');
從先前選擇的/可見的內容。
問題:雖然條件是成功的.addClass('fadeIn');
它在.removeClass('fadeIn');
似乎對類添加到所有.service-content
被點擊的.service-img
時失敗。
我的假設:雖然我問if ($('.service-content').is(':visible')) .addClass etc...
我從來沒有真正刪除類,因爲技術上.service-content
總是可見的被點擊.service-img
時。
問題:我怎麼能寫正確的條件,以檢查是否當前所選元素.is(':visible')
然後執行功能,如果不顧一切內容元素共享相同的類名。
數,半成功的嘗試
// Function Attempt 1 shows .service-content but adds .fadeIn
// to .service-img so service content never Fades Into view
$('.service-content').hide();
$('.service-content:first-child').show();
$('.service-img').click(function() {
$('.service-content').hide();
$('.service-content').eq($(this).index()).show();
if ($('.service-content').is(':visible')) {
$(this).addClass('fadeIn')
} else {
$(this).removeClass('fadeIn');
}
});
// Function Attempt 2
$('.service-content').hide();
$('.service-content:first-child').show();
$('.service-img').click(function() {
$('.service-content').hide();
$('.service-content').eq($(this).index()).show();
if ($('.service-content').is(':visible')) {
$('.service-content').addClass('fadeIn')
} else {
$('.service-content').removeClass('fadeIn');
}
});
// Function Attempt 3
$('.service-content').hide();
$('.service-content:first-child').show();
$('.service-img').click(function() {
$('.service-content').hide();
$('.service-content').eq($(this).index()).show();
if ($('.service-content').eq($(this).index()).is(':visible')) {
$('.service-content').eq($(this).index()).addClass('fadeIn')
} else {
$('.service-content').eq($(this).index()).removeClass('fadeIn');
}
});
下面是完整的原型:JS Fiddle
這會不會小提琴解決您的問題:https://jsfiddle.net/tc9L1k14/21/ – funcoding
無toggleClass()功能不起作用。當你在元素之間點擊時,我沒有看到fadeIn類正在執行。期望的效果是添加fadeIn類的內容,導致它淡入,然後刪除類fadeIn當一個不同的IMG被點擊,導致它淡入等...等... – WeebleWobb