我有一个图像列表,我希望在点击它们时,它们旁边会显示文字。我在默认状态下将图像的不透明度设置为0.5,当用户将鼠标悬停在图像上时,不透明度将变为full或1。
现在,只要文本框打开,我希望图像的不透明度为1。
您可以通过viewing this fiddle link.
获得更好的主意我已经尝试过这个用于我的javascript但它不起作用:
$('.team-text .close').click(function () {
$(this).parent('.team-text').hide();
});
$('.team-member .team-photo, .team-member .bio-button, .team-member-minor .team-photo, .team-member-minor .bio-button').on('click', function(){
$(this).find('.team-text:visible').hide();
$(this).find('.team-member img, .team-member-minor img').css('opacity','0.5');
});
$('.team-photo, .bio-button').on('click', function () {
$('.team-text').hide();
$(this).prevAll('.team-text:hidden').show();
$(this).prevAll('.team-member img, .team-member-minor img').css('opacity','1');
});
答案 0 :(得分:2)
将css类(例如active
)应用于“活动”状态的.team-member
div,这样您就不必手动设置每个项目的不透明度。这也使得事物更清洁,更易于维护。
编辑: 我根据@ Alexander的建议更改了下面的班级名称。 http://jsfiddle.net/Lh6xU/这是他的fiddle
<强> CSS 强>
.team-member-minor img {
opacity:.5; /* the default state for images; no need for jQuery */
}
.team-text {
display:none;
}
/* "active" class */
.team-member-minor.active img {
opacity:1;
}
.active .team-text {
display:inline;
}
<强> JS 强>
$('.team-member-minor').on('click', function(){
$(this)
.addClass('active')
.siblings('.team-member-minor')
.removeClass('active');
}
// if a user "closes" the textbox, reset our team member
$('.team-text .close').click(function () {
$(this).parent('.team-text').removeClass('active');
});
答案 1 :(得分:1)
您可以将以下内容添加到.on('click')
的{{1}}部分:
.team-photo,.bio-button
这将删除现有图像上的任何样式标记(通过更改其不透明度添加),然后将单击的$('img').removeAttr('style');
$(this).find('img').css({opacity:1});
的不透明度设置为1。
要在关闭文字部分时重置不透明度,点击img
时只需removeAttr('style');
:
.close
我认为这就是你想要的。我还更新了你的jsFiddle。