Как закрыть fancybox из дочернего окна? - PullRequest
5 голосов
/ 08 декабря 2010

родительская ссылка:

<a href="feedback.php" id="feed">Provide your feedback here</a>

Код jQuery для запуска fancybox: ...

$("#feed").fancybox();

коды в feedback.php ...

      <html>
        <head>
<script language="javascript">    
$(document).ready(function(){
    $("#feed_submit").click(function(){
    //Name is alerted
    alert($("#name").val());

    //code to close fancy box(Not working)
    $.fancybox.close();

    });
    });
</script>
        </head>
        <body>
        <form method="post" name="feedback" id="feedback" action="">
                <div>
                    <label>name</label>
                    <input type="text" name="name" id="name"/>
                </div>
                <div>
                    <label>feedback</label>
                    <input type="text" name="content" id="content"/>
                </div>
        <div><input type="button" name="feed_submit" id="submit" value="submit"></div>
    </form>    
    </body>
    </html>

После того, как нажата кнопка «Отправить», мне нужно закрыть самобытный блок на этой странице с помощью jquery

Я пытался использовать

$.fancybox.close();
parent.$.fancybox.close();

Но это не работает для меня. Если есть какая-либо возможность закрыть внутри этой формы Ajax, пожалуйста, дайте мне знать.

Ответы [ 10 ]

10 голосов
/ 13 декабря 2010

Следующий код должен работать и работал для многих людей

parent.$.fn.fancybox.close();

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

parent.jQuery.fn.fancybox.close();

Если ничего из этого не работает, используйте инструмент, такой как Firebug для Firefox, или консоль разработчика для Chrome, чтобы увидетьесли есть сообщение об ошибке, и сообщите нам, что это такое.

7 голосов
/ 08 декабря 2010

Попробуйте

window.parent.$.fancybox.close();

при условии, что $.fancybox.close(); работает в родительском окне.

2 голосов
/ 24 октября 2012

Попробуйте:

$("#fancybox-close").trigger('click');
1 голос
/ 24 марта 2013

Столкнулся с той же проблемой, это единственное решение, которое я смог найти, и он сделал свое дело:

сам код:

parent.jQuery.fancybox.close();

он работает в функции как таковой:

jQuery("#cancelId").click(function(){
    parent.jQuery.fancybox.close();
});

надеется, что это поможет, Наоре

1 голос
/ 30 августа 2011

Когда вы используете fancybox с типом: iframe, в окне iframe вы должны вставить все свои библиотеки, такие как jquery и т. Д. Затем, чтобы закрыть окно iframe, просто используйте parent.1002 * Помните, fancybox с типом "iframe" открывается в новом окне, fancybox с другими типами открывается в том же окне.

0 голосов
/ 16 января 2014

У меня была такая же проблема, но с ASP.NET.

По сути, на странице я открываю страницу (с элементом управления внутри), например:

$.fancybox({
                href: '/ContactUs.aspx',
                type: 'iframe',
                padding: 60,
                width: 465,
                height: 670,
                maxWidth: 465,
                maxHeight: 670,
            });

Когда я нажимаю закрыть на FancyBox, он работает, но если я отправляю его сначала, ТОГДА закрываете, fancyBox не закрывается, даже если страница находится в том же домене.

В конце концов я обнаружил, что вы должны установить autoSize: false при открытии FancyBox:

 $.fancybox({
                href: '/ContactUs.aspx',
                type: 'iframe',
                padding: 60,
                width: 465,
                height: 670,
                maxWidth: 465,
                maxHeight: 670,
                autoSize: false
            });

Теперь оно должно работать. Пожалуйста, ответьте, если это работает для кого-то еще. Приветствия.

Будет

0 голосов
/ 26 сентября 2013

Это будет работать наверняка, просто скопируйте и вставьте его:

<a href="javascript:;" onclick="jQuery('.fancybox-close').fancybox().trigger('click');">Close from Inside</a>

На самом деле это вызывает кнопку закрытия, если сама fancybox, которая работает в большинстве случаев.

Веселитесь с программированием:)

0 голосов
/ 17 июля 2013

// в дочернем окне или в фрейме поместите эту функцию:

function closeIframe(){ parent.closeIframeMain(); }

// и эта ссылка закрывает это окно

<a onclick="closeIframe();" href="#">Close window</a>

// затем в родительское окно ставим эту функцию:

function closeIframeMain(){ jQuery("#fancybox-close").trigger("click"); }

0 голосов
/ 18 февраля 2011

parent.jQuery.fancybox.close ();с. $.- скрипит в IE8.С этим - все ок.

0 голосов
/ 13 декабря 2010
$.fn.fancybox.close();

это работает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...