将函数附加到Prototype JS中的自定义事件

时间:2014-04-19 21:47:46

标签: javascript prototypejs

我正在使用第三方产品,我正在使用自己的自定义功能扩展用户界面。在其中的一部分,我需要在使用AJAX调用更新UI之后调用事件。幸运的是,应用程序在调用完成后使用Prototype JS库调用自定义事件,如下所示:

$(document.body).fire("ns:customevent");

如果我添加具有相同名称的自定义事件,则按预期工作

$(document).observe("ns:customevent", function(event) {
    //do custom stuff here
});

[我无法让$(document.body).observe()在这里工作,但我认为这不重要。]

我担心的是,应用程序中可能还有其他部分已经注册了针对该事件的功能,并且我(盲目地)用自己的事件覆盖它们,这将导致问题进一步发展。

Prototype是否附加自定义函数,即使它们具有相同的名称,或者它实际上是否覆盖它们?如果它覆盖了它们,那么如何将我的函数附加到已经存在的任何东西?无论如何看是什么

我会想象这样的事情,但我很难知道Protoype和我的JS现在非常生疏。

var ExistingCustomEvent = $(document.body).Events["ns:customevent"];
$(document).observe("ns:customevent", function(event) {
     ExistingCustomEvent();
    //do custom stuff here
});

我无法添加我的事件处理程序或添加代码来调用我自己的函数,我想尝试避免使用第三方库(如果可能的话)。

感谢。

1 个答案:

答案 0 :(得分:1)

作为其他任何偶然发现此问题的人的FYI,根据Pointy的评论,事实证明Prototype确实将函数附加到自定义事件。

我通过尝试以下方式验证了这一点,并且两个警报都被触发了。

$(document).observe("ns:customevent", function(event) {
     alert("ALERT 1");
});
$(document).observe("ns:customevent", function(event) {
     alert("ALERT 2");
});

很棒:)