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

Les deux ne fonctionnent pas.Outils jQuery: comment fermer une superposition?

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

Une suggestion? J'utilise Chrome car l'événement onLoad ne semble pas fonctionner correctement dans FF.

Répondre

16

Comme ceci:

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

Pour la plupart de leurs scripts que vous appelez la méthode originale, par exemple .overlay() puis appelez the method you want sur cet objet.

+0

Malheureusement cela ne fonctionne pas pour moi. J'ai édité ma question. Peut-être que vous savez ce qui ne va pas là-bas. – Rookian

+0

@Rookian - Avez-vous une erreur javascript ailleurs? L'API est assez simple, j'ai testé ce qui précède sur plusieurs sites ...On dirait que quelque chose d'autre interfère. –

+0

non il n'y a pas d'erreur. – Rookian

10

Vous devez définir api:true dans les propriétés si vous voulez le fermer de js:

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

overlay.close(); 
+0

cela ne fonctionne pas trop :(La superposition est toujours ouverte – Rookian

+0

Fonctionne pour moi.Ferme superposition par nom de classe.Merci! – RredCat

5

Le problème, en cas d'attribution de la superposition à une classe, est qu'il y aura beaucoup d'éléments de recouvrement, donc tous doivent être fermés:

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

Alternativement, il est possible de simuler un clic sur le bouton de fermeture:

la classe qui déclenche la superposition dans mon cas est caddy_grid_overlay, de sorte que le bouton de fermeture sont accessibles comme:

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

Vous pouvez créer une fonction et l'appeler à partir de n'importe quel endroit.

Cette fonction va fonctionner en fonction du nom de la classe et d'un lien.

fonction closeOverlay() { alerte ('aa'); var overlay = $ (\ "a.ShowOverlay \"). Superposition ({ api: true });

overlay.close(); 
} 
Questions connexes