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

Entrambi non funzionano.Strumenti jQuery: come chiudere un overlay?

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

Qualche suggerimento?

Utilizzo Chrome perché l'evento onLoad sembra non funzionare correttamente in FF.

risposta

16

Ti piace questa:

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

Per la maggior parte del loro script si chiama il metodo originale, per esempio .overlay() quindi chiama the method you want su quell'oggetto.

+0

sfortunatamente questo non funziona per me. Ho modificato la mia domanda. Forse sai cosa c'è che non va. – Rookian

+0

@Rookian - Stai riscontrando un errore javascript altrove? L'api è abbastanza semplice, ho provato quanto sopra su diversi siti ...sembra che qualcos'altro stia interferendo. –

+0

no non c'è nessun errore. – Rookian

10

è necessario impostare api:true in proprietà, se si desidera per chiuderla da js:

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

overlay.close(); 
+0

anche questo non funziona :(L'overlay è ancora aperto – Rookian

+0

Funziona per me. Chiude la sovrapposizione per nome della classe. – RredCat

5

Il problema, in caso di assegnazione della sovrapposizione a una classe, è che ci saranno molti elementi di sovrapposizione, in modo tutto deve essere chiuso:

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

in alternativa, è possibile simulare un clic sul pulsante di chiusura:

la classe che fa scattare la sovrapposizione nel mio caso è caddy_grid_overlay, in modo che il pulsante di chiusura si può accedere come:

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

puoi creare una funzione e chiamarla da qualsiasi cosa tu voglia.

questa funzione funzionerà in base al nome della classe e un collegamento.

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

overlay.close(); 
}