Domanda

Sto cercando di attivare eventi personalizzati su elementi DOM e passare funzioni anonime da eseguire quando viene attivato l'evento (utilizzando jQuery).Quindi qualcosa del genere:

$(some-dom).live("custom_event", function(evtObj, data, callback) {
//do some stuff
callback();
});

$(some-button).click(function() {
    $(some-dom).trigger("custom_event", some_data, function () {
        alert("this is my anonymous function passed as event data");
    }
});

Quindi fare clic su "some-button" dovrebbe attivare "custom_event" su "some-dom" e causare l'esecuzione della funzione anonima che ho passato al trigger.Giusto?Ma il browser dice che la richiamata non è definita nell'evento personalizzato.Sto facendo qualcosa di sbagliato?Il passaggio di funzioni anonime come argomenti trigger non è consentito?Grazie

È stato utile?

Soluzione

È necessario passare più argomenti aggiuntivi a trigger() come array. (Un argomento può essere passato senza Array.)

$(some-dom).click(function() {      //  v-----pass extra args in an Array
    $(some-dom).trigger("custom_event", [some_data, function () {
        alert("this is my anonymous function passed as event data");
    }]);
 //  ^------Array
});

Esempio: http://jsfiddle.net/NRSJ2/

Altri suggerimenti

Puoi farlo in questo modo:

$('#testelement').live("test_event", function(e, myCallback) {
    myCallback();
});

$('#clickme').click(function(e){
    e.preventDefault();

    var myFunc = function () {
        alert("this is my anonymous function passed as event data");
    };

    $('#testelement').trigger('test_event', [myFunc]);
});

Ecco la prova di concetto .

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