Question

J'essaie de déclencher des événements personnalisés sur les éléments DOM et de passer des fonctions anonymes à exécuter lorsque l'événement est déclenché (en utilisant jQuery). Donc quelque chose comme ça:

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

Donc, cliquer sur "Some Button" devrait déclencher "Custom_event" sur "Some-Dom" et provoquer l'exécution de la fonction anonyme que j'ai transmise sur le déclencheur. Droit? Mais le navigateur dit que le rappel n'est pas défini dans l'événement personnalisé. Est-ce que je fais quelque chose de mal? Le passage des fonctions anonymes est-elle comme des arguments de déclenchement n'est-il pas autorisé? Merci

Était-ce utile?

La solution

Vous devez transmettre plusieurs arguments supplémentaires à trigger() comme un tableau. (Un argument peut être passé sans le tableau.)

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

Exemple: http://jsfiddle.net/nrsj2/

Autres conseils

Vous pouvez le faire comme ceci:

$('#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]);
});

Voici la preuve de concept.

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