Observing 'click' event on <a> tag generated by scriptaculous Builder

Posted by bratsche on Stack Overflow See other posts from Stack Overflow or by bratsche
Published on 2010-06-13T18:16:19Z Indexed on 2010/06/13 18:22 UTC
Read the original article Hit count: 209

I'm using scriptaculous Builder to generate some DOM elements dynamically, and one of them is a link tag. I wasn't sure how to generate this with the click callback inline along with the rest of the Builder code, so I'm generating the link tag ahead of time and then inserting it with the rest of the Builder phase.

The problem is that the callback for the link is never actually executed when I click the link, and the URL bar changes to http://localhost/foo/bar/# instead. The callback method is a part of my class, so I'm binding it as an event listener ahead of time.

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. */
    }
});

© Stack Overflow or respective owner

Related posts about JavaScript

Related posts about prototype