jQuery工具:如何关闭叠加层?

Roo*_*ian 8 jquery overlay dialog popup jquery-tools

$("a[rel]").getOverlay().close();
$("a[rel]").close();
Run Code Online (Sandbox Code Playgroud)

两者都不起作用.

$(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);
    }
Run Code Online (Sandbox Code Playgroud)

有什么建议?

我使用Chrome是因为onLoad事件似乎无法在FF中正常工作.

Nic*_*ver 17

像这样:

$("a[rel]").overlay().close();
Run Code Online (Sandbox Code Playgroud)

对于他们的大部分脚本,您可以调用原始方法,例如,.overlay()然后在该对象上调用所需的方法.

  • @Rookian - 它应该*关闭所有这些,但你可以为`a [rel]`添加一个click处理程序,如下所示:`var overlayElem; $('a [rel]').click(function(){overlayElem = $(this);});`然后当你要关闭时,`overlayElem.overlay().close();`,`overlayElem`是一个保存最后打开的叠加层的全局变量. (2认同)

ser*_*erg 10

api:true如果要从js关闭它,则需要在属性中设置:

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

overlay.close();
Run Code Online (Sandbox Code Playgroud)


cod*_*zzi 5

在将叠加层分配给类时,问题是会有许多叠加元素,因此必须关闭所有叠加元素:

$.each($(".caddy_grid"), function(i, v){$(v).overlay().close();})
Run Code Online (Sandbox Code Playgroud)

或者,可以模拟关闭按钮上的单击:

在我的情况下触发叠加层的类是caddy_grid_overlay,因此关闭按钮可以被访问为:

$('.caddy_grid_overlay .close').click();
Run Code Online (Sandbox Code Playgroud)