2013-03-11 124 views
0

我有一个图像列表,当他们被点击时,我想让文本显示在他们旁边。我已将图像的不透明度设置为默认状态下的0.5,并且当用户将鼠标悬停在图像上时,不透明度将变为全屏或1.jQuery隐藏显示元素逻辑

现在我希望图像的不透明度为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

哪个文本框?我没有在jsfiddle中看到一个文本框。 – Lowkase 2013-03-11 19:51:36

+0

当你点击图片时,文本框出现。 – MGDTech 2013-03-11 19:53:17

+0

您应该尝试另一种方式... 直接在CSS文件中使用:opacity:0.5,并创建两个clases。非激活状态和激活状态时的类别。在那里,你可以使用addClass当生物活跃。 希望我有帮助! – 2013-03-11 19:54:22

回答

1

您可以添加以下到.on('click')件为.team-photo,.bio-button

$('img').removeAttr('style'); 
$(this).find('img').css({opacity:1}); 

这将删除现有图像上的任何样式标记(通过更改其不透明度添加),然后设置cli的不透明度cked img为1

要重置关闭文本部分,只是removeAttr('style');上的.close点击不透明度:

$('img').removeAttr('style'); 

我想这是你想要的。我也更新了你的jsFiddle。

+0

LifeInTheGrey,这正是我正在寻找的东西。我不知道你可以用jquery删除一个属性!我以为你可以改变CSS。删除属性更有意义。我应该发布更新的代码,还是只是在jsFiddle帮助? – MGDTech 2013-03-11 20:04:54

+0

哦,我认为你很好,jsFiddle提供了一个很好的参考。 – PlantTheIdea 2013-03-11 20:05:47

+1

我不同意。我不认为这个答案解决了你的代码中的所有问题。例如,你的'click'事件处理程序是多余的,你没有很好地使用CSS的类名。你已经完成了一个非常复杂的代码,这样一个简单的任务 – Alexander 2013-03-11 20:08:05

2

将css类(例如active)应用到您的“活动”状态下的.team-member div,这样您就不必手动设置每个项目的不透明度。这也使得事情变得更清洁,更容易维护。

编辑: 我改变了@亚历山大的建议下面的类名称。 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'); 
}); 
+0

谢谢尼克。这似乎更有意义。如果你注意到我的CSS,我确实设置了图像的不透明度。但是,我似乎无法让您的JavaScript按计划工作。 – MGDTech 2013-03-11 20:19:45

+1

这是因为没有'.team-member',而是'.team-member-minor'。 '.close'应该从'.team-member-minor'中删除'active'类名。检查[这个小提琴](http://jsfiddle.net/Lh6xU/):) – Alexander 2013-03-11 20:21:28

+0

感谢小提琴亚历山大。我会在我的答案中引用它,并在那里反映它的类名。 – 2013-03-11 21:28:09