Передача данных в окно jquery fancybox

Тема в разделе "JavaScript", создана пользователем mdss, 19 июн 2015.

Модераторы: ZiX
  1. mdss

    mdss ♖♘♗♕♔♗♘♖

    Moderator
    Регистр.:
    20 фев 2007
    Сообщения:
    1.140
    Симпатии:
    671
    Имеется вызов окна fancybox следующим кодом
    Код:
    $('a[rel=cat-buy]').fancybox({
            type : 'ajax',
            arrows : false,
            closeBtn : true,
            nextClick : false,
            helpers : {
                overlay : {
                    closeClick : true,
                    locked: false
                }
            },
            'afterLoad': function() {
                var a = this.element.parents('li').find('.cat-product-code').text(),
                       b = this.element.parents('li').find('.cat-product-name').text(),
                       c = this.element.parents('li').find('.cat-product-stock').html(),
                       d = this.element.parents('li').find('.cat-product-price').text();
            }
        });
    Вопрос в том, как уже в вызванном окне (отдельный php файл) вывести эти данные?
    Пробовал выводить так
    Код:
    $('#fb-product-code').text(a);
    и ничего не выводит. Вопрос в том, как в удаленный файл вывести нужные мне значения?
     
  2. Шумадан

    Шумадан Хабарра!!11

    Регистр.:
    6 фев 2008
    Сообщения:
    1.728
    Симпатии:
    2.105
    как вызывается тот отдельный пхп файл? передайте через get, отдельное окно имеет свой набор элементов и не знает ничего про елементы окна, вызвавшего его

    этот код нужно вызывать в окне откуда идёт вызов
    Код:
    var a = this.element.parents('li').find('.cat-product-code').text(),
                       b = this.element.parents('li').find('.cat-product-name').text(),
                       c = this.element.parents('li').find('.cat-product-stock').html(),
                       d = this.element.parents('li').find('.cat-product-price').text();
    попробуйте также глянуть тут
    http://stackoverflow.com/questions/23682336/pass-value-variable-from-fancybox-iframe-to-parent

    можна попробовать поиграться вот так ещё
    window.parent.$("#HiddenFieldState").val("MyValue");
     
  3. mdss

    mdss ♖♘♗♕♔♗♘♖

    Moderator
    Регистр.:
    20 фев 2007
    Сообщения:
    1.140
    Симпатии:
    671
    Если делать в обратном порядке, то уже вызванное окно ничего не знает про родителя.
    Опишу подробнее.
    На странице есть с десяток ссылок на один и тот же файл, каждая из которых вызывает окно фансибокс. Но в каждом из этих окон должны быть свои данные.
    Для примера:
    Если всего один товар, проблемы нет. Просто делаем поиск по странице нужного элемента и подставляем данные из него.
    Если же товаров несколько, то в вызываемое окно выводит данные по всем товарам.
    Вот мне необходимо подставлять данные именно родителя ссылки, кликнув по которой происходит вызов окна.
     
  4. Шумадан

    Шумадан Хабарра!!11

    Регистр.:
    6 фев 2008
    Сообщения:
    1.728
    Симпатии:
    2.105
    а
    find('.cat-product-code') возвращает один елемент или несколько?

    может проще сразу линке аттрибуты задавать и их считывать? чем искать по иерархии 4 элемента?
     
  5. mdss

    mdss ♖♘♗♕♔♗♘♖

    Moderator
    Регистр.:
    20 фев 2007
    Сообщения:
    1.140
    Симпатии:
    671
    возвращает все элементы. Буду именно таким способом делать, думал есть попроще реализация без назначения лишних атрибутов.

    Как выяснилось все-таки можно обойтись штатными средствами :)
    По итогу код вывоза окна получился вот таким:
    Код:
        $('a[rel=cat-buy]').fancybox({
            type : 'ajax',
            arrows : false,
            closeBtn : true,
            nextClick : false,
            padding: 0,
            helpers : {
                overlay : {
                    closeClick : true,
                    locked: false
                }
            },
            afterShow: function () {
                var $win = $('.fancybox-type-ajax');
                $win.contents().find('#prod_name').val(this.element.parents('li').find('.cat-product-name').text());
                $win.contents().find('#prod_price').val(this.element.parents('li').find('.cat-product-price').text());
                $win.contents().find('#fb-product-pic').html(this.element.parents('li').find('.cat-product-pic').html());
                $win.contents().find('#fb-product-pic img').removeClass('img-responsive').removeAttr('style').css('max-width','300px');
                $win.contents().find('#fb-product-code').text(this.element.parents('li').find('.cat-product-code').text());
                $win.contents().find('#fb-product-name').text(this.element.parents('li').find('.cat-product-name').text());
                $win.contents().find('#fb-product-stock').html(this.element.parents('li').find('.cat-product-stock').html());
                $win.contents().find('#fb-product-price').text(this.element.parents('li').find('.cat-product-price').text());
            }
        });
     
    Последнее редактирование модератором: 24 июн 2015
    Шумадан нравится это.