Показать сообщение отдельно
  #1 (permalink)  
Старый 08.08.2015, 09:51
Новичок на форуме
Отправить личное сообщение для webbaster Посмотреть профиль Найти все сообщения от webbaster
 
Регистрация: 08.12.2014
Сообщений: 9

Двойное срабатывание функции
Есть функция, которая меняет в поле карточки товара количество по клику + и -
function changeQty() {

        $('.minus').click(function () {
            al();
            var $input = $(this).parent().find('input[type=text]');
            var count = parseInt($input.val()) - 1;
            count = count < 1 ? 1 : count;
            $input.val(count);
            $input.change();
            return false;
        });
        $('.plus').click(function () {
            var $input = $(this).parent().find('[type=text]');
            $input.val(parseInt($input.val()) + 1);
            $input.change();
            return false;
        });
    }

Есть быстрый просмотр товара, который вызывается по клику на соответствующем блоке
$('.qv').click(function () {
        var regexp = new RegExp(/\S+=/);
        var itemid = $(this).attr('data-link').replace(regexp, '');
        $.ajax({
            url: 'quick-view.html',
            type: 'get',
            async: false,
            data: {itemid: itemid},
            success: function (data) {
                var tt = $('body').scrollTop() + $('html').scrollTop();
                $('#qvBox').css('top', tt + 100).html(data).fadeIn();
                //$('#qvBox').css('top', tt + 100).html(data).addClass('opendBlock');


                $('.xx').click(function () {
                    $('#qvBox').html('').fadeOut();
                    //$('#qvBox').html('').removeClass('opendBlock');

                });
                (function ($) {
                    changeQty();
                })(jQuery);

            }
        })
    });

При этом подгруженный код также содержит изменение количества товара, поэтому функцию changeQty() вставляю после успешного исполнения ajax запроса. Все работает хорошо.
Но, закрывая окно быстрого просмотра, вижу, что теперь на карточке товара + и - прибавляет и вычитает количество товара по 2 единицы.
Если еще раз открою окно быстрого просмотра, то прибавляет по 3 единицы и т.д.
Делаю вывод, что область видимости функции changeQty(), подгруженной при ajax запросе голобальна и при клике на + или - выполняется сначала функция, которая была загружена при загрузке страницы, потом все те, которые подгружены через ajax запрос.
Вопрос, как решить проблему?
Ответить с цитированием