J'utilise scriptaculous Builder pour générer dynamiquement des éléments DOM, et l'un d'entre eux est une balise link. Je ne savais pas comment générer ceci avec le rappel de clic en ligne avec le reste du code Builder, donc je génère la balise de lien à l'avance et l'insère ensuite avec le reste de la phase Builder.Observer l'événement 'click' sur <a> tag généré par scriptaculous Builder
Le problème est que le rappel pour le lien n'est jamais réellement exécuté lorsque je clique sur le lien, et la barre d'adresse URL change à http://localhost/foo/bar/# à la place. La méthode de rappel fait partie de ma classe, donc je la lie en tant qu'écouteur d'événements à l'avance.
var Foo = Class.create ({
initialize: function() {
this.closeBinding = this.doClose.bindAsEventListener (this);
},
generate: function() {
/* Create the link and bind the click listener */
var close_link = Builder.node ('a', { href: '#' }, 'Close');
Event.observe (close_link, 'click', this.closeBinding);
/* Generate the new DOM nodes */
return Builder.node ('div', [
Builder.node ('h2', 'This is a test'),
close_link
]);
},
doClose: function (evt) {
/* This code is never called when I click the link. */
}
});