0

誰かが説明できることを望んでいる奇妙な動作が見られます。

バックボーン ビューの render メソッドから、次のことを試みています。

this.$(".msg").colorbox();

this.$el.find(".msg").colorbox();

ただし、どちらの場合も、msg 要素が配置されていますが、返された要素で colorbox メソッドを呼び出そうとすると、メソッドが定義されていないという例外が発生します。

ただし、使用する場合:

$(this.el).find(".msg").colorbox();

すべては順調です。これがなぜなのか知っている人はいますか?

4

2 に答える 2

2

これは一般的な問題です。確かにcolorboxはjQueryプラグインです。jQueryプラグインは、ビューの要素がページのDOMに追加されるまで挿入されます。

つまり、コードは自然な動作で失敗するのが普通です。

$('body').append( view.render().el );

しかし、これを行うと、機能します:

$('body').append( view.el );
view.render();

サードパーティのBackbone.jsプラグインには、ビューのレンダリング後に実行される(DOMに追加されたと仮定して)onRenderという名前のメソッドがあります。ただし、追加のBackbone.jsプラグインを使用しない場合は、ビューがDOMに追加されるまで必ずカラーボックスを呼び出してください。

于 2012-08-08T14:57:00.130 に答える
0

暗闇での撮影...

this.$el$(this.el)は、両方が同じDOM要素を参照している場合でも異なるインスタンスです。

おそらく、Backboneがプリコンパイルthis.$el = $(this.el)した瞬間から、何かを呼び出す瞬間までが発生したthis.$el.colorbox()ため、この関数は使用できず、インスタンスで使用できませんでしたthis.$el

何であるかわかりませんcolorbox()が、これが3番目の部分の一部である場合、jQueryプラグインは、JSコードがロードされる順序で重要になる可能性がありますか?

于 2012-08-06T20:30:17.097 に答える