Javascript 将函数追加到Prototype JS中的自定义事件
我正在使用一个第三方产品,我正在使用自己的自定义功能扩展UI。在这一部分中,我需要在使用AJAX调用更新UI之后调用事件。幸运的是,在调用完成后,应用程序使用Prototype JS库调用自定义事件,如下所示:Javascript 将函数追加到Prototype JS中的自定义事件,javascript,prototypejs,Javascript,Prototypejs,我正在使用一个第三方产品,我正在使用自己的自定义功能扩展UI。在这一部分中,我需要在使用AJAX调用更新UI之后调用事件。幸运的是,在调用完成后,应用程序使用Prototype JS库调用自定义事件,如下所示: $(document.body).fire("ns:customevent"); 如果我使用相同的名称添加自己的自定义事件,那么这将按预期工作 $(document).observe("ns:customevent", function(event) { //do custom
$(document.body).fire("ns:customevent");
如果我使用相同的名称添加自己的自定义事件,那么这将按预期工作
$(document).observe("ns:customevent", function(event) {
//do custom stuff here
});
[我无法在这里使用$(document.body).observe()
,但我认为这并不重要。]
我在这里担心的是,应用程序的其他部分可能已经针对该事件注册了功能,我(盲目地)用自己的功能覆盖它们,这将导致问题进一步恶化
Prototype是否会附加自定义函数,即使它们具有相同的名称,还是会覆盖它们?如果它确实覆盖了它们,那么我如何将我的函数附加到已经存在的任何东西上?到底有没有看什么
我会想象这样的事情,但我几乎不知道原型,我的JS这些天都生锈了
var ExistingCustomEvent = $(document.body).Events["ns:customevent"];
$(document).observe("ns:customevent", function(event) {
ExistingCustomEvent();
//do custom stuff here
});
我不能添加我的事件处理程序或外接程序代码来调用我自己的函数,我想尝试避免使用第三方库(如果可能的话)
谢谢。对于其他偶然发现这个问题的人,请参考,根据Pointy的评论,Prototype确实将函数附加到自定义事件中 我通过尝试以下命令验证了这一点,并触发了两个警报
$(document).observe("ns:customevent", function(event) {
alert("ALERT 1");
});
$(document).observe("ns:customevent", function(event) {
alert("ALERT 2");
});
很好:)您几乎肯定不会覆盖其他事件处理程序;您只是在将自己的事件添加到处理程序列表中。@即使有一个事件已经用相同的名称声明了,也有意义吗?@Pointy我想您是对的,我刚刚尝试用相同的名称注册了两个事件,但都被触发了,这既是一个好消息,也是浪费我2个小时的生命:-p如果你想补充这个作为答案,我会标记为是,并补充我自己的回答。谢谢。我所知道的所有“现代”事件处理程序注册系统都不会覆盖旧的处理程序,原因正是您提到的:)只有旧的“onfoo”事件属性有这个问题。