9
votes

JQuery Tools: 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);
    }

0 commentaires

7 Réponses :


18
votes

Comme ceci: xxx

Pour la plupart de leurs scripts, vous appelez la méthode d'origine, par exemple. .Overlay () Appelez ensuite La méthode que vous voulez sur cet objet.


4 commentaires

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 Fermer tous, mais vous pouvez ajouter un gestionnaire de clic à A [rel] , comme ceci: variaelem; $ ('a [rel]' '). Cliquez sur (Fonction () {superchayelem = $ (ceci);}); alors quand vous souhaitez fermer, superchayelem.overlay (). Fermer (); , superposéelem étant une variable globale tenant la dernière superposition ouverte.



10
votes

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


1 commentaires

Travaille pour moi. Ferme la superposition par nom de classe. Merci!



5
votes

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é: xxx pré>

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 strong>, donc le bouton de fermeture peut être consulté comme suit: P>

$('.caddy_grid_overlay .close').click();


0 commentaires

2
votes

0 commentaires

1
votes
 $(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 commentaires

2
votes

Il fonctionnera pour vous, veuillez vous reporter au code ici, xxx

référence:

http://jquerytools.org/documentation/overlay/index.html#api

http://jquerytools.org/documentation/scripting.html


0 commentaires

0
votes

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


0 commentaires