Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.12.2012, 21:02
Аватар для mi.rafaylik
Кандидат Javascript-наук
Отправить личное сообщение для mi.rafaylik Посмотреть профиль Найти все сообщения от mi.rafaylik
 
Регистрация: 07.12.2012
Сообщений: 113

Повторное изменение класса при клике на изображение
Всем привет! )
Есть родительский div, в котором находится миниатюра изображения:
<div>
<img src='preview-1.jpg' class='image-preview'>
</div>

При клике на эту миниатюру: (1) в её src путь меняется на путь к полному изображению, (2) меняется класс - для полного изображения class image-full, и (3) для родительского слоя добавляется атрибут clear:left;
$('.image-preview').click(function(){
	$(this).attr('src', $(this).attr('src').replace('preview-', 'full-'));
	$(this).removeClass().addClass('image-full');
	$(this).parent('div').css('clear', 'left');
});

Всё это работает отлично, но я не могу осуществить обратный процесс.
После первых действий имею:
<div style="clear:left;">
<img src='full-1.jpg' class='image-full'>
</div>

Теперь при клике на полное изображение пытаюсь вернуть миниатюру, то есть совершить обратные действия:
$('.image-full').click(function(){
	$(this).attr('src', $(this).attr('src').replace('full-', 'preview-'));
	$(this).removeClass().addClass('image-preview');
	$(this).parent('div').css('clear', 'none');
});

Но результата нет увы Какие есть мысли?

Последний раз редактировалось mi.rafaylik, 27.12.2012 в 21:15.
Ответить с цитированием
  #2 (permalink)  
Старый 27.12.2012, 21:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

mi.rafaylik,
Как вариант использовать on
Ответить с цитированием
  #3 (permalink)  
Старый 27.12.2012, 21:31
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

<style type="text/css">
div.full-active {
 clear:left;
}
</style>



<div>
<img src='preview-1.jpg' class='image preview'>
</div>

<script type="text/javascript">
$('img.image').click(function(){
	$(this).toggleClass('preview').toggleClass('full');
	$(this).parent().toggleClass('full-active');
	var a=$(this).attr('src');var b=a.replace('preview','full')
	if(a==b){b=a.replace('full','preview');}
	$(this).attr('src',b);
});
</script>

Последний раз редактировалось Deff, 27.12.2012 в 22:15.
Ответить с цитированием
  #4 (permalink)  
Старый 27.12.2012, 22:06
Аватар для mi.rafaylik
Кандидат Javascript-наук
Отправить личное сообщение для mi.rafaylik Посмотреть профиль Найти все сообщения от mi.rafaylik
 
Регистрация: 07.12.2012
Сообщений: 113

Deff, огромное спасибо, решение шикарное!
Исправил только .parent на .parent('div')

Последний раз редактировалось mi.rafaylik, 27.12.2012 в 22:11.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача такова : нужно при клике на ссылку открыть страницу с новой вкладке, оставаясь asustekk Javascript под браузер 4 25.05.2012 14:04
При клике в любом месте документа должен удаляться определенный id DorianLeroy jQuery 2 24.12.2011 22:05
Событие при клике на любой элемент кроме одного shaltay jQuery 1 29.11.2011 19:27
Cкрипт сохранения при клике на ссылку alerzo Events/DOM/Window 4 08.05.2011 21:39
При первом клике список не раскрывается. lancer Элементы интерфейса 1 30.03.2008 17:24