Привет всем Я хочу, чтобы иметь возможность закрыть fancyBox, когда он открыт изнутри.
Я пробовал следующее, но безрезультатно:
function closeFancyBox(html){
var re = /.*Element insert complete!.*/gi;
if( html.search( re ) == 0 ){
$.fancybox.close();
//alert("foo");
}
}
foo откроется в диалоговом окне, но не будет закрываться. любые подсказки?
Ответ 1
Попробуйте следующее:
. Родитель $fancybox.close();.
См. Документация API Fancybox.
Ответ 2
Согласно http://fancybox.net/faq
- Как закрыть 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;