Вход

Просмотр полной версии : Обнулить значение переменной


Takasu
02.06.2015, 06:57
Доброго времени суток, уважаемые жители форума. Столкнулся с такой проблемой, есть функция, что-то вроде лайтбокса. Есть переменная src которая подставляет нужный адрес при клике на миниатюре. Суть проблемы в том что я не могу её обнулить, при клике на любое изображение отображается картинка на которую нажали первой.

Привожу код функции

$('img.preview_foto').click(function(){
src = null;
src = $(this).attr('src');
if(!$("div").is(".pop_up_preview_foto")){
$('body').append('<div class="pop_up_preview_foto">'+
'<div class="pop_up_body">'+
'<img src="catalog/view/theme/default/img/close_wight.png" alt="" title="Закрыть" class="close_pop_up"/>'+
'<div class="pop_up_slider">'+
'<ul class="pop_up_bxslider">'+

'</ul>'+
'</div>'+
'<input type="text" placeholder="Станислав" class="pop_up_body_input">'+
'<input type="text" placeholder="+38 (050) ХХ ХХ ХХХ" class="tel pop_up_body_input">'+
'<div class="buy_btn">Заказать в 1 клик</div>'+
'</div>'+
'</div>');
$('.pop_up_bxslider').append('<li><img src="'+src+'" alt=""/></li>');

$('.pop_up_bxslider').bxSlider({

auto: true,
pager: false

});
$(".tel").mask("+38 (999) 999 99 99");
}
$('body').addClass('ov_hidden');
$('div.pop_up_preview_foto').fadeOut(0);
$('div.pop_up_preview_foto').fadeIn(300);
});

PS. Не важно в каком месте функции обнулять, не помогает.
PPS. Если обнулить сразу после вызова - работает..
Ну и банальность, сильно не бейте я только учусь :)

laimas
02.06.2015, 07:12
src = null; - в этом вообще нет смысла, ибо
src = $(this).attr('src'); -сразу же она примет значение
а источником этого значения будет изображение по которому щелкнули.

Takasu
02.06.2015, 07:18
src = null; - в этом вообще нет смысла, ибо
src = $(this).attr('src'); -сразу же она примет значение
а источником этого значения будет изображение по которому щелкнули.
Я это понимаю, и изначально там этой строчки не было, появилась после того как я понял что переменная, как раз таки, не принимает новое значение.

laimas
02.06.2015, 07:24
И на чем это утверждение строится?

Takasu
02.06.2015, 07:30
И на чем это утверждение строится?
Проверил, извиняюсь, вы правы.
Путём alert(src); было проверено что переменная таки принимает новое значение, но тогда я совершенно не понимаю почему не меняется изображение..

laimas
02.06.2015, 07:36
А что должно измениться? Вставляемое изображение <img src="'+src+'" alt=""/> получает путь изображения preview_foto, а значит будет показано оно.

Takasu
02.06.2015, 07:43
Вот ссылка http://takasu.pp.ua/
Блок "ТОП ПРОДАЖ"
Alert на всякий случай оставил.

laimas
02.06.2015, 07:59
$('body').append('<div class="pop_up_preview_foto">' .... а потом передали в него галерею изображений, на примере как выше с авто.
А если показать одно изображение по щелчку на нем, нужно открыть эту панель, загрузить а него фото, а при закрытии уничтожить ее, а не скрыть. Иначе она должна уже быть, но скрыта по умолчанию удалять изображение в ней при закрытии панели. У вас же происходит копирование панели за счет метода .append().

Takasu
02.06.2015, 10:35
Большое спасибо, уважаемый laimas, натолкнули на правильные мысли, и разъяснили что к чему :)
Решил проблему так:
$('img#close_pop_up').click(function(){
$("div.pop_up_preview_foto").detach()
});
Решил заодно поинтересоваться, нормальный ли это выход, или есть что-то более логичное?

laimas
02.06.2015, 10:47
Ну в общем то да, этот метод тоже удаляет элемент, но в отличие от метода remove() он оставляет информацию о нем.

Takasu
02.06.2015, 11:43
Ну в общем то да, этот метод тоже удаляет элемент, но в отличие от метода remove() он оставляет информацию о нем.
Ну на то и расчёт, что-бы вдруг ничего лишнего не удалить :)
Еще раз спасибо за помощь!

laimas
02.06.2015, 12:29
Лишнее это что? Информация об элементе удаляемом, например какой у него был стиль, и затем ее восстановить можно. Метод remove() кроме указанного элемента ничего лишнего не удаляет, только и об удаляемом элементе ничего не сохраняется, а оно и не обязательно может и потребуется.