我正在构建一个单页的Web应用程序。我必须动态构造嵌套的Backbone.View。
通常我构造一个空的jQuery,在其中添加div,在其上完成事件绑定,然后返回 那个jQuery对象。
我注意到,如果我追加jQuery对象而不是附加object.html(),则会保留绑定在该对象上的事件。
我很困惑,该jQuery对象中的事件/回调在哪里存储,以及当我插入jQuery对象时,如何将这些回调传递给DOM树。
此外,我想知道在DOM操作之后我必须在哪种情况下重新绑定回调。
谢谢。
答案 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的事件插件,可以监视和调试被测试的事件)。