2010-07-16 97 views
7
$("a[rel]").getOverlay().close(); 
$("a[rel]").close(); 

兩者都不起作用。jQuery工具:如何關閉覆蓋?

$(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中似乎無法正常工作。

回答

16

像這樣:

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

對於大部分腳本調用原始的方法,例如.overlay()然後在該對象上調用the method you want

+0

不幸的是,這並不爲我工作。我編輯了我的問題。也許你知道那裏出了什麼問題。 – Rookian 2010-07-16 16:18:21

+0

@Rookian - 你在其他地方得到一個JavaScript錯誤嗎? api非常簡單,我在幾個站點上測試了上述內容...看起來像別的東西在干擾。 – 2010-07-16 16:32:29

+0

不,沒有錯誤。 – Rookian 2010-07-16 20:23:23

10

你需要設置api:true的屬性,如果你想從JS關閉它:

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

overlay.close(); 
+0

這不起作用:(覆蓋層仍然打開 – Rookian 2010-07-16 20:23:53

+0

適用於我。關閉覆蓋類名。謝謝! – RredCat 2011-06-01 08:31:54

5

的問題,在覆蓋分配給一類的情況下,是會有很多重疊的元素,所以一切都必須關閉:

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

或者,也可以模擬點擊關閉按鈕:

觸發覆蓋在我的情況下,類是caddy_grid_overlay,所以關閉按鈕可以訪問如:

$('.caddy_grid_overlay .close').click(); 
1
$(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

你可以創建一個函數並從任何你想要的地方調用它。

這個函數會根據類名和鏈接工作。

function closeOverlay(){ alert('aa'); var overlay = $(\「a.ShowOverlay \」).overlay({api:true });

overlay.close(); 
}