Закрыть fancy box от функции изнутри open 'fancybox'

Привет всем Я хочу, чтобы иметь возможность закрыть fancyBox, когда он открыт изнутри.

Я пробовал следующее, но безрезультатно:

function closeFancyBox(html){
    var re = /.*Element insert complete!.*/gi;
    if( html.search( re ) == 0 ){
        $.fancybox.close();
        //alert("foo");
    }
}

foo откроется в диалоговом окне, но не будет закрываться. любые подсказки?

Ответ 2

Согласно http://fancybox.net/faq

  1. Как закрыть FancyBox из другого элемента??

Просто позвоните $.fn.fancybox.close() on ваше событие onClick

Поэтому вы должны просто добавить в fn.

Ответ 3

Нет смысла помещать .fn, он будет ссылаться на прототип.
Что вам нужно сделать, это $.fancybox.close();

Дело в том, что вы, возможно, испытываете другую ошибку от js.
На экране есть какие-либо ошибки?
Являются ли ваши fancybox и jquery последними выпусками? jquery в настоящее время находится в 1.4.1 и fb в 1.3 something

Эксперимент помещает ссылку внутри fancybox и помещает в нее эту функцию.

Вероятно, вы читали это, но в любом случае, http://fancybox.net/api

Одна вещь, которую вам, вероятно, нужно будет сделать, это изолировать каждую часть, чтобы понять, что это такое.

Ответ 4

Если вы просто хотите закрыть причудливый бокс, достаточно закрыть его.

$('#inline').click(function(){
  $.fancybox.close();
});

Ответ 5

У меня были одни и те же проблемы, и я получил решение по приведенному ниже коду. используйте

parent.jQuery.fancybox.close()

Ответ 6

Вы даже можете закрыть fancybox, запустив идентификатор кнопки и запустите событие click на этом id.

<input type='button' value='Cancel' onclick='javascript:document.getElementById("fancybox-close").click();' />

Это работает для меня!

Ответ 7

Немного старого потока, но...

Собственно, я подозреваю, что ответ на исходный вопрос о том, как закрыть окно из внутри, больше связан с тем фактом, что событие click не привязано к элементу. Если событие click привязано в document.ready, событие не будет прикреплено, когда fancybox создаст новое окно.

Вам необходимо повторно применить событие click после нового окна. Вероятно, самый простой способ сделать это - использовать функцию onComplete.

Это работает для меня:

$(".popup").fancybox({
    'transitionIn'  :   'fade',
    'transitionOut' :   'elastic',
    'speedIn'       :   600, 
    'speedOut'      :   400, 
    'overlayShow'   :   true,
    'overlayColor'  :   '#000022',
            'overlayOpacity'  : 0.8,
            'onComplete' : function(){$('.closer').click(function(){parent.$.fancybox.close();})}
});

Собственно, после немного мысли "живой", а не 'click' или "bind" может работать так же хорошо.

Ответ 8

Используйте это, чтобы закрыть его:

$.fn.fancybox.close();

Судя по исходному коду fancybox, так они обрабатывают его внутреннее закрытие.

Ответ 9

После борьбы с этим я нашел решение, которое работает, просто заменив $на jQuery jQuery.fancybox.close(), и я сделал его встроенным script в onClick. Чтобы проверить, могу ли я вызвать его из родительского

Ответ 10

Для тех, кто провел часы, подобные мне, чтобы найти решение для встроенного типа: window.setTimeout(function() {$. fancybox.close()}, 10);

Ответ 11

В итоге я использовал:

<script>parent.$("#fancy_close").click();</script>

Я предполагаю, что у версии fancybox у нас нет функции $.fancybox.close() для вызова: (

FYI, я просто хотел, чтобы страница закрыла fancybox, так как она завершила обработку в PHP.

Ответ 12

Добавьте $.fancybox.close() туда, где вы хотите, чтобы она была запущена, в функции или обратном вызове, конец вызова ajax!

Woohoo.

Ответ 13

Внутри iframe use - parent. $. fancybox.close();

Ответ 14

чтобы закрыть fancybox с помощью funciton, необходимо сделать setTimtout для функции, которая закроет fancybox Fancybox нужно некоторое время, чтобы выполнить функцию закрытия Если вы вызываете функцию напрямую, она не будет работать

function close_fancybox(){
$.fancybox.close();
                     }
setTimeout(close_fancybox, 50);

Ответ 15

да в Virtuemart должна быть кнопка CLOSe-continue, а не элемент, потому что после щелчка вы можете перенаправить.. Я нашел эту ошибку перенаправления на моем веб-сайте ajax.

Ответ 16

Чтобы закрыть окно ajax fancybox, используйте это:

onclick event -> $.fancybox.close();
return false;