2013-03-11 2 views
0

У меня есть список изображений, которые я хочу иметь рядом с ними, когда на них нажимают. Я установил непрозрачность изображения как 0,5 в состоянии по умолчанию, и когда пользователь наводил курсор на изображение, непрозрачность переходит в полную или 1.jQuery hide show element logic

Теперь я хочу, чтобы непрозрачность изображения была на 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

+0

Когда вы нажимаете на изображение, появляется текстовое поле. – MGDTech

+0

Вы должны попробовать по-другому ... Используйте это: opacity: 0.5 непосредственно в файле CSS и создайте две классы. Классы для неактивных и для активных. Там, где активен Bio, вы можете использовать addClass. Надеюсь, что я помог! –

ответ

1

Вы можете добавить следующее в .on('click') части для .team-photo,.bio-button:

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

Это удаляет любой тег стиля на существующих изображениях (добавляется изменением их непрозрачности), а затем устанавливает непрозрачность cli трахнуться img 1.

Чтобы сбросить непрозрачность закрытия текстовой части, просто removeAttr('style'); по щелчку .close:

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

Я думаю, что это то, что вы хотите. Я также обновил ваш jsFiddle.

+0

LifeInTheGrey, который делает именно то, что я ищу. И я не знал, что вы можете удалить атрибут с помощью jquery! Я думал, вы можете просто изменить css. Удаление атрибута имеет больше смысла. Должен ли я публиковать обновленный код или просто использовать его в jsFiddle help? – MGDTech

+0

О, я думаю, что все в порядке, jsFiddle дает хорошую ссылку. – PlantTheIdea

+1

Я прошу не согласиться. Я не думаю, что этот ответ решает все проблемы в вашем коде. Например, обработчики событий 'click' являются избыточными, и вы не используете хорошее использование классов классов CSS.Вы закончили с чрезмерно сложным кодом для такой легкой задачи. – Alexander

2

Примените класс css (например, active) к разделу «.team-member» в вашем «активном» состоянии, поэтому вам не нужно вручную устанавливать непрозрачность для каждого элемента. Это также делает вещи более чистыми и удобными для будущего.

EDIT: Я изменил имена классов в соответствии с предложением Александра ниже. 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

+1

Это потому, что нет '.team-member', но' .team-member-minor'. И '.close' должен удалить' active' classname из '.team-member-minor'. Проверьте [эту скрипку] (http://jsfiddle.net/Lh6xU/) :) – Alexander

+0

Спасибо за скрипку Александр. Я расскажу об этом в своем ответе и отражу его имена классов. –