【问题标题】:Observing 'click' event on <a> tag generated by scriptaculous Builder观察 scriptaculous Builder 生成的 <a> 标签上的“点击”事件
【发布时间】:2011-03-03 06:42:39
【问题描述】:

我正在使用 scriptaculous Builder 动态生成一些 DOM 元素,其中之一是链接标签。我不确定如何使用内联的点击回调以及其余的 Builder 代码来生成它,所以我提前生成了链接标记,然后将它与 Builder 阶段的其余部分一起插入。

问题是,当我单击链接时,链接的回调从未真正执行,而是 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. */
    }
});

【问题讨论】:

    标签: javascript prototypejs scriptaculous


    【解决方案1】:

    所以,我发现了真正的问题。实际上,就我观察事件的方式而言,我并没有做错任何事情,但是我遗漏了一个看起来不相关但显然相关的细节。我正在生成的 DOM 代码是被插入到 Modalbox[1] 中的东西,显然该脚本正在干扰我的事件绑定或其他东西。在“this”上观察函数的链接很混乱,因为“this”显然是指模态框,而不是我的对象 Foo。

    所以我的解决方案可能不太理想,但我找到了另一种访问“this”中数据的方法,因此事件绑定现在不是我的方式。

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

    【讨论】:

      猜你喜欢
      • 2011-05-16
      • 1970-01-01
      • 2015-10-07
      • 2020-11-26
      • 2014-08-24
      • 2015-03-11
      • 1970-01-01
      • 2016-10-12
      • 2011-05-01
      相关资源
      最近更新 更多