Инструменты jQuery: как закрыть оверлей? - PullRequest
8 голосов
/ 16 июля 2010
$("a[rel]").getOverlay().close();
$("a[rel]").close();

Оба не работают.

$(document).ready(function () {
        $("a[rel]").overlay({
            mask: '#3B5872',
            effect: 'apple',
            onBeforeLoad: function () {
                var wrap = this.getOverlay().find(".contentWrap");
                wrap.load(this.getTrigger().attr("href"));
            },
            onLoad: function () {
                $('.contentWrap form').submit(function (event) {
                    event.preventDefault();
                    $("a[rel]").overlay().close();
                    hijack(this, update_employees, "html");
                });
            }
        });
    });

    function hijack(form, callback, format) {
        $.ajax({
            url: form.action,
            type: form.method,
            dataType: format,
            data: $(form).serialize(),
            success: callback
        });
    }

    function update_employees(result) {
        $("#gridcontainer").html(result);
    }

Есть предложения?

Я использую Chrome, потому что событие onLoad, кажется, не работает правильно в FF.

Ответы [ 7 ]

17 голосов
/ 16 июля 2010

Как это:

$("a[rel]").overlay().close();

Для большинства сценариев вы вызываете оригинальный метод, например, .overlay() затем вызовите метод, который вы хотите для этого объекта.

10 голосов
/ 16 июля 2010

Вам нужно установить api:true в свойствах, если вы хотите закрыть его из js:

var overlay = $("a[rel]").overlay({
    ...
    api:true
});

overlay.close();
5 голосов
/ 20 июля 2011

Проблема, в случае назначения оверлея классу, состоит в том, что будет много элементов оверлея, поэтому все они должны быть закрыты:

$.each($(".caddy_grid"), function(i, v){$(v).overlay().close();})

В качестве альтернативы, можно смоделировать щелчок покнопка закрытия:

Класс, который запускает наложение в моем случае: caddy_grid_overlay , поэтому к кнопке закрытия можно получить доступ как:

$('.caddy_grid_overlay .close').click();
2 голосов
/ 19 июня 2012

Это будет работать для вас, пожалуйста, укажите код здесь,

var api = $("a[rel]").data("overlay");

api.close();//close this overlay

Ссылка:

http://jquerytools.org/documentation/overlay/index.html#api

http://jquerytools.org/documentation/scripting.html

2 голосов
/ 05 сентября 2011

Попробуйте

$("a[rel]").data("overlay").close();

Я использую это, чтобы закрыть мои оверлеи.

источник: http://forum.jquery.com/topic/having-trouble-timing-jquery-tools-overlay-to-close-after-a-few-seconds

1 голос
/ 28 марта 2012
 $(document).ready(function() { 
    var overlayObject = $("a[rel]").overlay({ 
        top: 50,
        expose: {
                    color: '#232323',
                    closeOnClick: true
                },

                onClose:function() {   
                    $('#reg-login').hide();
                    $('#reg-register').hide();
                },
        effect: 'apple'
 });    
0 голосов
/ 25 декабря 2014

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

эта функция будет работать на основе имени класса и ссылки.

function closeOverlay () { оповещение ( 'аа'); var overlay = $ (\ "a.ShowOverlay \"). overlay ({ апи: правда });

    overlay.close();
}
...