【问题标题】:jQuery Tools: How to close an overlay?jQuery 工具:如何关闭覆盖?
【发布时间】:2011-03-17 01:23:06
【问题描述】:
$("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 中似乎无法正常工作。

【问题讨论】:

    标签: jquery dialog popup overlay jquery-tools


    【解决方案1】:

    像这样:

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

    对于他们的大部分脚本,您调用原始方法,例如.overlay() 然后在该对象上调用 the method you want

    【讨论】:

    • 不幸的是,这对我不起作用。我编辑了我的问题。也许你知道那里出了什么问题。
    • @Rookian - 您是否在其他地方收到 javascript 错误?该 api 非常简单,我在几个站点上测试了上述内容......看起来有其他东西在干扰。
    • 我发现了问题。我的页面中有多个“a[rel]”元素。我在一个表中有几个编辑按钮和一个与“a[rel]”选择器匹配的创建按钮。如何检测单击了哪个“a[rel]”元素或如何缓存弹出的 jQuery 覆盖?
    • @Rookian - 它应该关闭所有这些,但您可以向a[rel] 添加一个点击处理程序,如下所示:var overlayElem; $('a[rel]').click(function() { overlayElem = $(this); }); 然后当您想要关闭时, overlayElem.overlay().close();overlayElem 是一个全局变量,用于保存最后打开的覆盖。
    【解决方案2】:

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

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

    【讨论】:

    • 为我工作。按类名关闭覆盖。谢谢!
    【解决方案3】:

    如果将叠加层分配给一个类,问题是会有很多叠加层元素,所以必须全部关闭:

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

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

    在我的例子中触发覆盖的类是caddy_grid_overlay,所以关闭按钮可以这样访问:

    $('.caddy_grid_overlay .close').click();
    

    【讨论】:

      【解决方案4】:

      试试

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

      我用它来关闭我的叠加层。

      来源:http://forum.jquery.com/topic/having-trouble-timing-jquery-tools-overlay-to-close-after-a-few-seconds

      【讨论】:

        【解决方案5】:
         $(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'
         });    
        

        【讨论】:

          【解决方案6】:

          它会为你工作,请参考这里的代码,

          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

          【讨论】:

            【解决方案7】:

            你可以创建一个函数并从任何你想要的地方调用它。

            这个函数会根据类名和链接起作用。

            函数 closeOverlay() { 警报('aa'); var 覆盖 = $(\"a.ShowOverlay\").overlay({ api:真 });

                overlay.close();
            }
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2011-03-02
              • 1970-01-01
              • 1970-01-01
              • 2010-09-05
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多