场景:我创建了一个简单的显示/隐藏功能,允许用户点击IMG并显示后续内容。
预期行为:当用户点击IMG .service-img
时,我希望选定的IMG内容.service-content
到.addClass('fadeIn');
.removeClass('fadeIn');
.addClass('fadeIn');
1}}来自之前选择/可见的内容。
问题虽然条件在.removeClass('fadeIn');
成功,但在.service-content
时失败。.service-img
似乎将该类添加到所有if ($('.service-content').is(':visible')) .addClass etc...
单击。
我的假设: 虽然我问.service-content
但我永远无法真正删除该课程,因为技术上.service-img
始终可见{{1}单击。
问题: 如何正确编写条件以检查 当前所选元素 {{1无论所有内容元素是否共享相同的类名,都执行函数。
一些半成功的尝试
.is(':visible')
以下是完整的原型:JS Fiddle
答案 0 :(得分:1)
我认为在显示新选择的元素之前,您需要先删除之前的元素。即removeClass
应该在addClass
之前。
$('.service-content').removeClass('fadeIn'); //Assuming this will remove class fadeIn from all elements.
$('.service-content').eq($(this).index()).show();
if ($('.service-content').eq($(this).index()).is(':visible')) {
$('.service-content').eq($(this).index()).addClass('fadeIn')
}
答案 1 :(得分:1)
您不需要检查元素是否可见。我猜这可以解决问题。
https://jsfiddle.net/3fbzrto0/30/
$('.service-img').on('click', function(){
var index = $(this).index();
var content = $('.service-content').eq(index);
//hide all visible elements
$('.service-content').hide();
$('.service-content').removeClass('fadeIn');
content.show();
content.addClass('fadeIn');
});