Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Добавить товару активному изображению (https://javascript.ru/forum/events/59898-dobavit-tovaru-aktivnomu-izobrazheniyu.html)

fenix_63 02.12.2015 11:40

Добавить товару активному изображению
 
Всем привет. Народ, помогите пжлста. Есть сайт: hookah-dream.ru/katalog/product/view/20/202.html
В нём есть товар, например "колбы для кальяна". подскажите как сделать так, чтобы выбранное изображение колбы дополнялось меткой? Ну т.е. картинкой? Надо чтобы на выбранном изображении стояла галочка, что в данный момент выбрано именно это изображение товара.

Помогите пжлста. Саму метку с её изображением сделал, а вот как её прикрепить к изображению товара - не знаю.

Думаю функция на JS нужна, которая бы активной картинке какой-нибудь класс active присваивала, но вот реализовать пока не получается. Вот код:

<span id='list_product_image_thumb'>
				<?php if ( (count($this->images)>1) || (count($this->videos) && count($this->images)) ) {?>
				
				
					<!--тут идёт вывод метки товара, сейчас выводятся метки у каждой миниатюры, а надо только у выбранной--->
						<?php if ($product->label_id){?>
							<div class="product_label">
								<?php if ($product->_label_image){?>
									<img src="<?php print $product->_label_image?>" alt="<?php print htmlspecialchars($product->_label_name)?>" />
								<?php }else{?>
									<span class="label_name"><?php print $product->_label_name;?></span>
								<?php }?>
							</div>
						<?php }?>
						<!-------------------------------->	
				
				
					<?php foreach($this->images as $k=>$image){?>
						
						
						<!--нужно обработать OnClick(). Нужно добавить класс active именно той картинке, на которую нажали,
						а остальным присвоить класс no_active. Изображение с классом active (метка) и будет появляться только
						на одной картинке, а не на всех-->
						<img class="jshop_img_thumb" src="<?php print $this->image_product_path?>/<?php print $image->image_thumb?>" alt="<?php print htmlspecialchars($image->_title)?>" title="<?php print htmlspecialchars($image->_title)?>" onclick="showImage(<?php print $image->image_id?>,this)" />
											
						
					<?php }?>
				<?php }?>
			</span>


И есть вот такая функция, срабатывает при клике по изображению:

function showImage(id, obj){    
    jQuery('.video_full').hide();
    jQuery('a.lightbox').hide();
    jQuery("#main_image_full_"+id).show();//Вывод большой картинки
    jQuery(".product_label").show();//Вывод метки
	
	
	//Добавляем класс 
	//jQuery(".jshop_img_thumb").addClass("active");
	//jQuery(obj.className).addClass("active");
	var my_class=jQuery(obj).attr("class");
	jQuery("."+my_class).addClass("active");
	
	//my_class.addClass("active");
}

laimas 03.12.2015 05:53

Если результирующий html это span и в нем img, то ради этих двух тегов столько php-тегов натуеверчено, что код читать, это приключение. ) Неужто нельзя упростить запись используя тернарный оператор?

Если я правильно понял, то не jQuery(".product_label").show(); нужен, а добавлять/удалять класс. Но речь идет о товарах, а не просто картинках, а товары это не собственность клиента, сервер то должен знать о выборе пользователя, а сообщать ему об этом классом не получится, нужна форма, а конкретно ее элемент checkbox, который и определяет выбор. И все события должны быть привязаны к нему, по вашему же описанию получается, что вы пытаетесь управлять картинкой вне контекста товара, которому она принадлежит.


Часовой пояс GMT +3, время: 05:52.