0

我正在使用 Backbone View 来渲染一些小部件,它们在被渲染为独立元素后被插入到 DOM 中。虽然一些插件/小部件在元素仍处于“半空中”时工作,但其他插件/小部件需要元素成为 DOM 的一部分才能正常运行。例如,在主干视图的渲染方法中,我需要调用:

$("#images").slimScroll(); //slimScroll is a jquery plugin that add custom scrollbar 

但这不起作用。它只有在 Backbone View 元素在 DOM 中之后才有效,现在我的解决方法是在将小部件插入 DOM 后调用插件方法,但这非常不灵活。因此,当元素在 DOM 中呈现时,我需要一个事件,例如 document.ready,但当元素在文档中准备好时触发。有这样的活动吗?或者处理这种情况的最佳方法是什么?

4

3 回答 3

1

Ajax 本身不会导致 DOM 更新。

如果由于某些 Ajax 内容而导致 DOM 更新,那是因为事件处理函数修改了 DOM。

只需将您的代码放在该事件处理程序中的 DOM 修改代码之后。

也就是说,您可以在受支持的浏览器中使用突变观察器来观察 DOM 的变化。

于 2013-09-09T08:51:03.057 回答
1

您必须在视图范围内找到元素。像这样:

this.$("#images").slimScroll();

但我想它不会起作用,因为插件需要将元素添加到 DOM 来计算宽度、高度、偏移量等。

于 2013-09-09T08:52:16.677 回答
0

您可以使用ajaxStartwhich 将在发出Ajax请求时触发。

于 2013-09-09T08:52:21.813 回答