我看到一些奇怪的行为,我希望有人可以解释。
从骨干视图中的render方法我一直在尝试执行以下操作:
this.$(".msg").colorbox();
和
this.$el.find(".msg").colorbox();
但是在这两种情况下,虽然找到了msg元素,但是当尝试在返回的元素上调用colorbox方法时,我得到一个异常,即没有定义该方法。
但是当我使用时:
$(this.el).find(".msg").colorbox();
一切都很好。有人知道为什么会这样吗?
答案 0 :(得分:2)
这是一个常见问题。当然colorbox是一个jQuery插件。注入jQuery插件,直到将View的元素添加到页面的DOM中。
我的意思是,你的代码在自然行为失败时是正常的。
$('body').append( view.render().el );
但如果你这样做,它会起作用:
$('body').append( view.el );
view.render();
第三方Backbone.js插件有一个“命名”onRender的方法,在渲染View后执行(并假设添加到DOM中)。但是,如果您不使用其他Backbone.js插件,请确保在将View添加到DOM之前调用colorbox。
答案 1 :(得分:0)
在黑暗中拍摄......
this.$el
和$(this.el)
是不同的实例,即使两者都引用相同的DOM元素。
也许自从Backbone确实预编译this.$el = $(this.el)
到你调用this.$el.colorbox()
时发生了一些事情,所以这个函数不可用,它在实例this.$el
中从未出现过。< / p>
我不知道什么是colorbox()
但如果这是第三部分的一部分,jQuery插件对于加载JS代码的顺序很重要?