私はあなたのビューjQueryのセレクタが実行されたときに心に留めておく必要がある けど...
を作品el.button();
を保証することができます。
あなたのように入力すると、ビューコードが解析されたときにjQueryセレクタが実行されます。 の意味は、domが読み込み準備ができていない場合です。
あなたが最良の後にこのようにel
を渡すことができます:今、あなたのビューは、文書準備にインスタンス化され
var ButtonView = Backbone.View.extend({
initialize: function() {
this.el.button();
}
});
$(function(){
var myButton = new ButtonView({ el: $('#ButtonId') });
});
、ボタン要素は、DOMの準備ができていたので、合格し、あなたのセレクタは、ボタン要素に解決されます。喜んでel.button();
を使って何かを適用することができます。
例:それを行うにはhttp://jsfiddle.net/saelfaer/KEQQB/
編集
別の方法は、エル引数としてごelementselectorを定義し、唯一のあなたがやったようにそれを実行することです。
var ButtonView = Backbone.View.extend({
el: '#ButtonId'
initialize: function() {
$(this.el).button();
}
});
$(function(){
var myButton = new ButtonView({ });
});
これは同様に動作しますが、あなただけがそれを上書きしない限り、最初の例は、コードを再利用するためのクリーナーです、あなたの特定のボタンでこのビューを使用することができるだろう、あなたはそれを3回インスタンス化し、それぞれの可能性それらあなたがする...
例別のボタン渡すことができます。私はrenderメソッドを使用してお勧めしたい追記上のhttp://jsfiddle.net/saelfaer/KEQQB/6/
追記 を、あなたは、initでこれを行うには無料ですが、私は信じていますレンダリングメソッドは、手作業でなければならないものですこれあなたには、いくつかのスタイリングをしたい場合は、リソースに// ajax.googleapis.com/AJAX/libsに/ jqueryui/1.8.16 /テーマ/ベース/ jqueryの-ui.css`:
var ButtonView = Backbone.View.extend({
initialize: function() {
_.bindAll(this, "render");
},
render: function() {
this.el.button();
return this;
}
});
$(function(){
var myButton = new ButtonView({ el: $('#ButtonId') }).render();
});
あなたは 'HTTPを追加することができます。 'el: '#myButton''と' $(this.el).button() 'は別のオプションでしょうか? –
1)correct、$(this.el)....もオプションですが、ビュー自体にelを指定しますが、必要な場所、複数の場所でビューを再利用したり、私は、柔軟性を提供するので、要素を渡すことはありません2)jquery UIのCSSリンクのおかげで、すぐに追加します – Sander
ありがとう、あなたはまさに正しいです。私の問題は、私が使用していたセレクタではなく、セレクタがDOMの準備が整う前に実行されていたことでした。あなたの答えのすべての部分が役に立ちました。 – xcer