如何在javascript中创建一个监视数组的自定义事件?

时间:2012-08-28 02:54:37

标签: javascript custom-event

我看到了有关如何创建自定义事件的其他问题,但我不清楚如何跟踪特定的自定义条件。

在我的例子中,我需要“监听”数组从x元素到y元素的可能性。

我不确定在Array上进行原型设计是不是一个好主意,尽管这是我需要的理想选择。

然而,更广泛的问题是,编写自定义侦听器的方法是什么,它实际上是-pseudo的模拟 -

onClockStruckTwo 要么 onDomChanged 要么 onRapture

意思是,我不想等待其他预定义的onEvent(onclick,onkeydown等)发生,而是想自己制作。

请没有框架答案。我试图理解这在本机javascript中是如何工作的。

TIA

2 个答案:

答案 0 :(得分:0)

我问你的问题是“你在听什么来自?”如果您正在收听服务器上的更改,您可以setTimeout进行AJAX调用,但这远非建议。如果您严格要求更改元素的长度,那么必须有其他一些您可以知道将引发事件的内容。我说如果它与服务器无关,请不要“听”,只需将所需的Javascript代码附加到您知道将触发事件更改的内容的末尾。

修改

以下是all the Javascript event types的列表。我没有看到任何提到DOM对象为空。你可以按照希望的方式SOL

答案 1 :(得分:0)

数组没有任何类型的事件通知系统来更改javascript。因此,如果您想知道阵列何时更改,则必须创建自己的通知系统。

由于您不想使用任何框架(其中许多框架提供事件通知和触发事件),您必须构建自己的框架。

事件系统有几种不同的方法(通过通用消息回调的消息,每个事件的单独回调,其中任何一个的面向对象的方法等等......

最直接的(不一定是最优雅的)是让创建事件的对象维护事件的回调列表。然后,当感兴趣的一方想要注册该事件时,他们会调用一个方法并将其传递给事件和回调。这类似于addEventListener在DOM事件的浏览器DOM中的工作方式。该方法调用的接收者然后将回调存储在回调数组中。一段时间后,当实际事件发生时,依次调用为该事件注册的每个回调。

由于数组修改本身不会触发事件,因此您必须实现一个既能使数组发生变化又能发出事件信号的函数。