2013-03-11 163 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