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

Beide funktionieren nicht.jQuery Tools: Wie man ein Overlay schließt?

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

Irgendwelche Vorschläge?

Ich verwende Chrome, da das onLoad-Ereignis in FF nicht korrekt funktioniert.

Antwort

16

So:

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

Für die meisten ihrer scripting Sie die ursprüngliche Methode aufrufen, z.B. Rufen Sie .overlay() dann für dieses Objekt.

+0

leider funktioniert das nicht für mich. Ich habe meine Frage bearbeitet. Vielleicht weißt du, was dort falsch ist. – Rookian

+0

@Rookian - erhalten Sie einen Javascript-Fehler an anderer Stelle? Die API ist ziemlich direkt, ich habe das oben gegen mehrere Seiten getestet ...sieht aus wie etwas anderes störend ist. –

+0

nein es gibt keinen Fehler. – Rookian

10

Sie müssen api:true in Eigenschaften setzen, wenn Sie es von js schließen möchten:

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

overlay.close(); 
+0

das funktioniert auch nicht :(Das Overlay ist noch offen – Rookian

+0

Funktioniert für mich. Schließt Overlay nach Klassennamen. Danke! – RredCat

5

Das Problem, bei der Überlagerung zu einer Klasse zuweisen, ist, dass es viele Überlagerungselemente sein, so alle geschlossen werden müssen:

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

Alternativ ist es möglich, ein Klick auf die Schaltfläche zum schließen zu simulieren:

die Klasse, die die Überlagerung in meinem Fall auslöst, ist caddy_grid_overlay, so dass die Schließen-Schaltfläche kann zugegriffen werden:

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

Sie können eine Funktion erstellen und sie von jedem beliebigen Ort aus aufrufen.

Diese Funktion wird basierend auf dem Klassennamen und einem Link funktionieren.

Funktion closeOverlay() { Warnung ('aa'); var overlay = $ (\ "a.ShowOverlay \"). Overlay ({ api: true });

overlay.close(); 
} 
Verwandte Themen