Как закрыть jQuery fancybox от нажатия кнопки - PullRequest
16 голосов
/ 09 декабря 2010

Я использую Необычное поле , чтобы создать всплывающее окно и загрузить на него другую страницу, используя iframe.вот мой код

    <script type="text/javascript">
$(document).ready(function() {

    $('.calendar .day').click(function() {
        day_num = $(this).find('.day_num').html();
        day_data = prompt('Enter Stuff', $(this).find('.content').html());
        if (day_data != null) {

            $.ajax({
                url: window.location,
                type: 'POST',
                data: {
                    day: day_num,
                    data: day_data
                },
                success: function(msg) {
                    location.reload();
                }                       
            });
            }
        });
    });
$(document).ready(function(){
    $("a.iframeFancybox1").fancybox({
    'width'           : 800,
    'height'              : 650,
    'overlayOpacity'     :  '0.4',
    'overlayColor'       :  '#000',
    'hideOnContentClick' :   false,
    'autoScale'          :   false,
    'transitionIn'       :   'elastic',
    'transitionOut'  :   'elastic',
    'type'           :   'iframe'
    });
});

</script>

Он успешно загружает страницу и делает все.Но вместо закрытия всплывающей формы он загружает исходную форму всплывающего окна внутри самого всплывающего окна.Я хочу закрыть всплывающую форму после завершения работы и вернуться на страницу главного меню, из которой было сгенерировано всплывающее окно.Как мне добиться этого по нажатию кнопки всплывающей формы.

С уважением, Рангана

Ответы [ 9 ]

34 голосов
/ 09 декабря 2010

вызов $.fancybox.close();

также посмотрите на эти ответы в сообщении

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

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

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

Так что вы должны просто иметь возможность добавить в fn.

14 голосов
/ 30 октября 2012

Мне пришлось использовать parent.jQuery.fancybox.close() с моим Drupal сайтом, чтобы заставить это работать должным образом.

7 голосов
/ 08 октября 2012

Вы можете использовать встроенный вызов

<input type="button" onclick="$.fancybox.close()" value="CloseFB" />

Или вы можете использовать функцию под названием

<script>
function closeFB() {
    // Before closing you can do other stuff, like page reloading
    $("#destination_div").load("?v=staff #source_div_with_content"); 
    // After all you can close FB
    $.fancybox.close(); 
}
</script>

<input type="button" onclick="closeFB()" value="CloseFB" />

Вызов функции в onClickevent

4 голосов
/ 02 сентября 2016

Это старая ветка, но я решил поделиться своими двумя центами.

У меня были похожие проблемы с закрытием iframe fancybox с помощью события onclick, и после многих попыток это помогло мне:пример использования кнопки ввода:

<input type="button" class="formbutton" value="Close" onClick="window.parent.jQuery.fancybox.close();" />

Также я протестировал onlick на теге anchor (a), и он работал нормально.

2 голосов
/ 10 января 2014

Из-за моей кнопки закрытия есть разные функции: закрыть всплывающее окно и закрыть fancybox. Он должен использовать e.stopPropagation (), чтобы остановить всплывающее событие;

$('.close-btn').on('click', function(e) {
        e.preventDefault();
        e.stopPropagation();
        $(this).parent().hide();
        $.fancybox.close();
});
2 голосов
/ 15 октября 2012

$.fn.fancybox.close() не работает для версии 2.x, фактически возникает ошибка.Если вы используете версию 2.x, попробуйте вместо нее $.fancybox.close(true).

1 голос
/ 07 сентября 2015

ПРОСТОЕ решение, найдите ссылку для закрытия (у нее есть класс fancibox-close) и сделайте это за 6 секунд (или 6000 миллисекунд)

setTimeout(function(){
    $('.fancybox-close').click();
}, 6000);
0 голосов
/ 27 ноября 2015

Используйте кнопку закрытия события в fancybox:

document.getElementsByClassName("fancybox-item fancybox-close")[0].click();
0 голосов
/ 04 марта 2015

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

    <script type="text/javascript" src="../../js/jquery-ui.js"></script>

    <script src="../../js/fancybox-2.1.5/jquery.fancybox.js" type="text/javascript"></script>
    <script src="../../js/fancybox-2.1.5/jquery.fancybox.pack.js" type="text/javascript"></script>
    <link href="../../js/fancybox-2.1.5/jquery.fancybox.css" rel="stylesheet" type="text/css" />
    <script lang="javascript">
        var J$ = jQuery.noConflict();
        function SelectAndClose() {
            txtValue = document.getElementById('<%= _browseTextBox.ClientID %>').value;
            window.returnValue = txtValue.value;

            var isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
            // Opera 8.0+ (UA detection to detect Blink/v8-powered Opera)
            var isFirefox = typeof InstallTrigger !== 'undefined';   // Firefox 1.0+
            var isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;
            // At least Safari 3+: "[object HTMLElementConstructor]"
            var isChrome = !!window.chrome && !isOpera;              // Chrome 1+
            var isIE = /*@cc_on!@*/false || !!document.documentMode;   // At least IE6


            if (isIE == true) {
                //alert("iexcplorer");
                parent.J$.fancybox.close();
                //document.getElementById("closeFancyInternet").click();//For IExplorer
            }
            else {
                //alert("another one");
                document.getElementById("closeFancy").click(); //For Firefox
            }
            return false;
        }

        function closeBrowsing() {
            document.getElementById("closeFancy").click();
            window.close();
            return false;
        }


    </script>

Если вы хотите проверить браузер, вы должны увидеть эту ссылку: http://jsfiddle.net/9zxvE/383/

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