$(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); }
7 Réponses :
Comme ceci: Pour la plupart de leurs scripts, vous appelez la méthode d'origine, par exemple. .Overlay () Code> Appelez ensuite La méthode que vous voulez sur cet objet. p> p>
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 - Obtenez-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 est interférant.
J'ai trouvé le problème. J'ai plus d'un élément "A [rel]" dans ma page. J'ai plusieurs boutons d'édition dans une table et un bouton Créer correspondant au sélecteur "A [rel]". Comment puis-je détecter quel élément "A [rel]" est cliqué ou comment mettre en cache la superposition de jQuery apparue?
@Rookian - Ça Devrait I> Fermer tous, mais vous pouvez ajouter un gestionnaire de clic à A [rel] code>, comme ceci:
variaelem; $ ('a [rel]' '). Cliquez sur (Fonction () {superchayelem = $ (ceci);}); code> alors quand vous souhaitez fermer,
superchayelem.overlay (). Fermer (); code>,
superposéelem code> étant une variable globale tenant la dernière superposition ouverte.
Vous devez définir API: true code> dans les propriétés si vous souhaitez le fermer à partir de JS:
var overlay = $("a[rel]").overlay({
...
api:true
});
overlay.close();
Travaille pour moi. Ferme la superposition par nom de classe. Merci!
Le problème, en cas d'attribution de la superposition à une classe, est qu'il y aura de nombreux éléments de recouvrement, tout doit donc être fermé: alternativement, il est possible de simuler un Cliquez sur le bouton Fermer: p> La classe qui déclenche la superposition dans mon cas est $('.caddy_grid_overlay .close').click();
Essayez J'utilise ceci pour fermer mes superpositions. p> Source: http://forum.jquerery.com/topic/having-trouble-timing-jquery-tools -overlay-to-close-après-A-quelques secondes p> p>
$(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' });
Il fonctionnera pour vous, veuillez vous reporter au code ici, référence: p> http://jquerytools.org/documentation/overlay/index.html#api p>
Vous pouvez créer une fonction et l'appeler à partir de tout ce que vous voulez.
Cette fonction va fonctionner basée sur le nom de la classe et un lien. P>
fonction de fermeroverlay () { alerte ('aa'); super superposition = $ (\ "a.showoverlay \"). Superposition ({ API: vrai }); p>
overlay.close(); }