事件/回调在哪里存储在DOM树中?

时间:2013-02-21 01:22:39

标签: html dom javascript-events jquery

我正在构建一个单页的Web应用程序。我必须动态构造嵌套的Backbone.View。

通常我构造一个空的jQuery,在其中添加div,在其上完成事件绑定,然后返回 那个jQuery对象。

我注意到,如果我追加jQuery对象而不是附加object.html(),则会保留绑定在该对象上的事件。

我很困惑,该jQuery对象中的事件/回调在哪里存储,以及当我插入jQuery对象时,如何将这些回调传递给DOM树。

此外,我想知道在DOM操作之后我必须在哪种情况下重新绑定回调。

谢谢。

2 个答案:

答案 0 :(得分:0)

作为实施细节,绑定到$('some-selector')的事件存储在
$('some-selector').data('events')

并不是说,作为jQuery用户,您需要担心这一点。

答案 1 :(得分:0)

Backbone事件对象基本上是做事件绑定的简写。你能不能利用它吗?这是一种更标准的方法。您的方法是非标准的,可能会引起混淆。如果您需要保持动态,可以使用convention explained on the Backbone website附加活动。

如果删除DOM或将其添加回来,则需要重新绑定事件。根据视图的工作方式,如果模型更改触发视图刷新,则可能需要重新绑定事件。然而,Backbone事件哈希处理了这一点。

jQuery确实将事件附加到.data('events')中的DOM节点,但是going away with 1.8(您仍然可以使用它,但它不应该用于除调试之外的其他目的)。您无法正常检查DOM的事件。这使得调试非常困难。如果你使用jQuery来附加事件,它会使调试变得更容易,因为你可以使用未缩小的jQuery并在它调度事件的位置中断。 Chrome也适用于调试事件问题。但理想情况下,您希望在拥有它们之前预防它们。我希望能有更多的工具出现(就像说PhantomJS的事件插件,可以监视和调试被测试的事件)。