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

Cả hai đều không hoạt động.Công cụ jQuery: Cách đóng một lớp phủ?

$(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); 
    } 

Mọi đề xuất?

Tôi sử dụng Chrome vì sự kiện onLoad có vẻ không hoạt động chính xác trong FF.

Trả lời

16

Như thế này:

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

Đối với hầu hết các kịch bản của họ, bạn gọi phương thức ban đầu, ví dụ .overlay() rồi gọi the method you want trên đối tượng đó.

+0

tiếc là điều này không có tác dụng đối với tôi. Tôi đã chỉnh sửa câu hỏi của mình. Có lẽ bạn biết những gì là sai ở đó. – Rookian

+0

@Rookian - Bạn có gặp phải lỗi javascript ở nơi khác không? Các api là khá thẳng về phía trước, tôi đã thử nghiệm ở trên chống lại một số trang web ...trông giống như một cái gì đó khác đang can thiệp. –

+0

không có lỗi. – Rookian

10

Bạn cần phải thiết lập api:true trong tính nếu bạn muốn đóng nó từ js:

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

overlay.close(); 
+0

điều này cũng không hoạt động: (Lớp phủ vẫn mở – Rookian

+0

Làm việc cho tôi. Đóng lớp phủ theo tên lớp. – RredCat

5

Vấn đề, trong trường hợp giao lớp phủ lên lớp, là sẽ có nhiều yếu tố che phủ, vì vậy tất cả phải được đóng lại:

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

Ngoài ra, nó có thể để mô phỏng một nhấp chuột vào nút đóng:

lớp kích hoạt lớp phủ trong trường hợp của tôi là caddy_grid_overlay, vì vậy nút đóng có thể được truy cập như:

$('.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

bạn có thể tạo một hàm và gọi nó từ bất kỳ nơi nào bạn muốn.

chức năng này sẽ hoạt động dựa trên tên lớp và liên kết.

chức năng closeOverlay() { alert ('aa'); var overlay = $ (\ "a.ShowOverlay \"). Overlay ({ api: true });

overlay.close(); 
} 
Các vấn đề liên quan