Наблюдение за событием 'click' на теге <a>, созданном scriptaculous Builder - PullRequest
1 голос
/ 13 июня 2010

Я использую scriptaculous Builder для динамической генерации некоторых элементов DOM, и одним из них является тег ссылки.Я не был уверен, как сгенерировать это с помощью встроенного обратного вызова click вместе с остальной частью кода Builder, поэтому я заранее генерирую тег link, а затем вставляю его вместе с остальной частью фазы Builder.1002 * Проблема в том, что обратный вызов для ссылки никогда не выполняется, когда я щелкаю ссылку, и вместо этого строка URL-адреса изменяется на http://localhost/foo/bar/#.Метод обратного вызова является частью моего класса, поэтому я связываю его как слушатель событий заранее.

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

1 Ответ

1 голос
/ 14 июня 2010

Итак, я обнаружил реальную проблему.На самом деле я не делал ничего плохого с точки зрения того, как я наблюдал за событием, но я упустил деталь, которая не казалась релевантной, но, по-видимому, актуальной.Код DOM, который я генерирую, - это что-то, что вставляется в Modalbox [1], и, очевидно, этот сценарий вмешивается в мою привязку событий или что-то в этом роде.Ссылка, которая наблюдает за функцией «this», была сбита с толку, потому что, по-видимому, «this» ссылалось на Modalbox, а не на мой объект Foo.

Так что мое решение было, пожалуй, немного менее идеальным, но янашел другой способ доступа к данным, которые были в 'this', и поэтому привязка к событию теперь не у меня.

[1].http://okonet.ru/projects/modalbox/

...