Domanda

Ho un grosso problema a scrivere un piccolo pezzo di codice usando JS / jQuery (non so quale di questi sta causando il problema). Comunque, eccoci qui:

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

    return false;
});

e la funzione stessa:

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 funzione si chiama modalwindow2 e voglio chiamare una funzione quando viene mostrato il modale e un'altra funzione quando il modale sarà nascosto.

Il primo non è un problema.

Il secondo ... Beh ... Diciamo solo che è un problema. Perché?

Voglio un parametro inviato alla seconda funzione. Il paramenter è una risposta Ajax, simile ad altre cose jQuery (azione Ajax, ordinabile, ecc.).

Spero di essermi chiarito abbastanza.

Grazie!

Modifica:

Sto usando jQuery 1.1.2 (o 1.1.3) e l'aggiornamento o l'utilizzo dell'interfaccia utente di jQuery NON è una soluzione. Ho alcune dipendenze (l'interfaccia è una di queste) e non ho abbastanza tempo (né motivazione) per passare a 1.3 & amp; UI 1.7.

È stato utile?

Soluzione

Ho notato che hai un refuso su .submit: $ ( 'forma'). Submti (function () {

È stato solo un errore di accesso a SO?

EDIT: Ok, quindi dopo aver esaminato il tuo codice e aver fatto un breve test, ho ideato questo (scusate il gioco di parole):

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

Sembra che potresti aver perso il " questo " nell'istruzione call (). Prova a utilizzare callbackOnHide.call (this, data);

Fammi sapere se funziona meglio!

Altri suggerimenti

Capisco cosa stai cercando di fare, ma dovrai archiviare la finestra appena creata in modo da poter accedervi con la funzione di callback chiusa.

Potresti dare un'occhiata a Finestra di dialogo dell'interfaccia utente jQuery . Fornisce alcune funzionalità di base per le finestre di dialogo (modali e non) e gestisce alcune delle implementazioni di callback.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top