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

Ambos no funcionan.jQuery Tools: ¿cómo cerrar una superposición?

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

¿Alguna sugerencia?

Uso Chrome porque el evento onLoad parece no funcionar correctamente en FF.

Respuesta

16

De esta manera:

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

Para la mayoría de sus secuencias de comandos se llama al método original, por ejemplo, .overlay() luego llame al the method you want en ese objeto.

+0

lamentablemente esto no funciona para mí. Edité mi pregunta. Tal vez sabes lo que está mal allí. – Rookian

+0

@Rookian - ¿Recibes un error de javascript en otro lugar? La API es bastante directa, he probado lo anterior contra varios sitios ...parece que algo más está interfiriendo. –

+0

no, no hay ningún error. – Rookian

10

Es necesario configurar api:true en propiedades si desea cerrarla desde JS:

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

overlay.close(); 
+0

esto no funciona demasiado :(La superposición todavía está abierta – Rookian

+0

Funciona para mí. Cierra superposición por nombre de clase. ¡Gracias! – RredCat

5

El problema, en el caso de la asignación de la superposición de una clase, es que habrá muchos elementos de superposición, por lo todo tiene que estar cerrada:

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

Alternativamente, es posible simular un clic en el botón de cierre:

la clase que provoca la superposición en mi caso es caddy_grid_overlay, por lo que el botón de cierre se puede acceder a:

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

puede crear una función y llamarla desde cualquier lugar que desee.

esta función va a funcionar en función del nombre de la clase y un enlace.

function closeOverlay() { alert ('aa'); var superposición = $ (\ "a.ShowOverlay \"). Superposición ({ api: true });

overlay.close(); 
} 
Cuestiones relacionadas