2014-04-19 53 views
0

我正在使用第三方产品,在这里我用自己的自定义功能扩展了UI。在部分内容中,我需要在用AJAX调用更新UI之后调用事件。幸运的是,应用程序触发使用Prototype JS库调用完成后,自定义事件的调用,就像这样:将函数附加到原型JS中的自定义事件

$(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 
}); 

我无法添加我的事件处理程序或代码添加到打电话给我自己的功能,我想尝试避免第三方库(如果这甚至有可能)。

谢谢。

+1

你几乎可以肯定不是*覆盖*其他的事件处理程序;你只是把你添加到处理程序列表中。 – Pointy

+0

@Pointy即使已经声明了一个名字相同的名称? – jammykam

+0

@Pointy我认为你是对的,我只是试着注册2个同名的事件并且都被解雇了,这既是好消息,也是浪费了我2个小时的生活:-p如果你想补充一点,将它标记为,并添加我自己的回复。谢谢。 – jammykam

回答

1

作为其他任何人在这个问题上遇到的问题,遵循Pointy的评论,原型确实将函数追加到自定义事件中。

我通过尝试以下操作对两个警报进行了验证。

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

大:)

相关问题