Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Обнулить значение переменной (https://javascript.ru/forum/jquery/56161-obnulit-znachenie-peremennojj.html)

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

Цитата:

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

Я это понимаю, и изначально там этой строчки не было, появилась после того как я понял что переменная, как раз таки, не принимает новое значение.

laimas 02.06.2015 07:24

И на чем это утверждение строится?

Takasu 02.06.2015 07:30

Цитата:

Сообщение от laimas
И на чем это утверждение строится?

Проверил, извиняюсь, вы правы.
Путём
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() он оставляет информацию о нем.


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