Question

J'ai un gros problème pour écrire un petit morceau de code avec JS / jQuery (je ne sais pas lequel de ceux-ci est la cause du problème). Quoi qu'il en soit, on y va:

$('#themePicker').unbind().click(function() {
    var t = $(this);    
    modalwindow2(t, function() {
        console.log(1);
    }, function(w) {
        console.log(w);
    });

    return false;
});

et la fonction elle-même:

function modalwindow2(w, callbackOnSHow, callbackOnHide) {
    if (typeof(callbackOnSHow) == 'function') {
        callbackOnSHow.call();
    }

    // do some stuff //
    $('form').submit(function() {
        ajaxSubmit(function(data) {
            if (typeof(callbackOnHide) == 'function') {
                console.log('---------------');
                console.log(data);
                console.log('---------------');
                callbackOnHide.call(data);
            }
        });

        return false
    });
}

La fonction s'appelle modalwindow2 et je souhaite appeler une fonction lorsque le modal est affiché et une autre fonction lorsque le modal sera masqué.

Le premier n'est pas un problème.

La seconde… Bien… Disons simplement que c'est un problème. Pourquoi?

Je veux un paramètre envoyé à la deuxième fonction. Le paramenter est une réponse ajax, similaire à d'autres éléments jQuery (action ajax, sortable, etc.).

J'espère que j'ai été suffisamment clair.

Merci!

Modifier:

J'utilise jQuery 1.1.2 (ou 1.1.3) et la mise à niveau ou l’utilisation de jQuery UI n’est PAS une solution. J'ai quelques dépendances (l'interface en fait partie) et je n'ai pas assez de temps (ni de motivation) pour passer à la version 1.3 & amp; UI 1.7.

Était-ce utile?

La solution

J'ai remarqué que vous avez une faute de frappe sur .submit: $ ('formulaire'). submti (fonction () {

S'agissait-il simplement d'une erreur de saisie pour SO?

EDIT: Ok, donc, après avoir examiné votre code et effectué un petit test, j'ai trouvé ce (excusez-moi du jeu de mots):

function modalwindow2(w, callbackOnShow, callbackOnHide) {
    if(typeof callbackOnShow == 'function') {
        callbackOnShow.call();
    }
    $('form').submit(function() {
        if(typeof callbackOnHide == 'function') {
            callbackOnHide.call(this, "second");
        }
    });
}

$(document).ready(function (){
    $('#themePicker').click(function(){
        var t=$(this);
        modalwindow2(t, function() { alert("first"); }, function(x) { alert(x); });
        return false;
    });
});

On dirait que vous venez peut-être de rater le " this " dans votre déclaration call (). Essayez d’utiliser callbackOnHide.call (this, data);

Faites-moi savoir si cela fonctionne mieux!

Autres conseils

Je comprends ce que vous essayez de faire, mais vous devez stocker la fenêtre nouvellement créée pour pouvoir y accéder via la fonction de rappel rapproché.

Vous pouvez consulter la la boîte de dialogue de l'interface utilisateur jQuery . Il fournit des fonctionnalités de base pour les fenêtres de dialogue (modales et autres) et gère une partie de l’implémentation du rappel.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top