2

バックボーンの基礎を学び始めたばかりですが、ここで何が起こっているのかよくわかりません。

this.$input = this.$('#new-todo');

誰かが私にこれが実際に何をしているのか概要/内訳を教えてもらえますか?

私の限られた理解からthis.$('#new-todo')、典型的なjqueryセレクターは、#new-todo(入力)を見つけてそれをに渡しますthis.$input。これは(これによると)$( this +'input')の省略形ですが、ここに私はそれを失います-なぜそれが実際にそこにあるのですか?本当に#new-todoDOMから$(this +'input')に割り当てるだけですか?もしそうなら、this。$ inputにあるものの代わりにthis。$('something')DOMセレクターを使用する方が良いのではないでしょうか?

4

4 に答える 4

3

コード例は、jQuery要素をキャッシュしています。

jQueryコンストラクターを使用すると、DOMにクエリを実行することになります。一致するすべての要素を検索します。使用するセレクターによっては、これは非常にコストのかかる操作になる可能性があります。

jQueryオブジェクトを複数回使用する場合は、DOMを1回だけクエリすることをお勧めします。

次に例を示します。

var foo = $('.someClass');
foo.css("background-color", "yellow");
console.log(foo.length + " items updated");

上記のコードはfoo複数回使用されましたが、DOMは1回しか照会されませんでした。

あなたのコードがfoojQueryオブジェクトであるという事実をもう少し明白にしたとしたらいいのではないでしょうか?

// a lot of developers like to prepend a $ to variable names
var $foo = $('.someClass'); 
于 2013-03-04T03:42:41.343 に答える
1

Backbone.$jQuery(またはZepto)に委任します。

この場合this.$、jQueryに委任し、IDを持つ要素を返しますnew-todo

this.$input$inputは、jQueryオブジェクトであることを示す命名規則です。

thisオブジェクトは、DOMコンテキストではなく、バックボーンインスタンスを参照します。

this.$ == jQuery

this.$input単なる属性です。

this.$input = this.$("#new-todo");次のように書き直すことができます。

this.input = jQuery("#new-todo");また

this.input = $("#new-todo");

$input$fooは、変数に$barなどの名前を付けることができるのと同じように、任意の名前のプロパティです。

于 2013-03-04T03:42:14.057 に答える
0

$(this + 'input')文字列でない限り、おそらく無効になるので、私が知っていることはしていませんthis。Backboneはわかりませんが、this.$jQueryのようです。したがってthis.$("#new-todo")、BackboneではjQuery('#new-todo')、その要素を選択するだけのと同じです。名前の付いたメンバーに保存すると、jQueryセレクター関数を1回だけ呼び出すことができ、元のセレクターを知らなくても他のメソッドで$input参照することもできます。this.$input

于 2013-03-04T02:48:35.273 に答える
0

this.$inputが指しているobjectへの単なる属性になります。this

そしてthis.$('#new-todo')、現在のビュー(ビューが指す要素)から一致する要素を見つけて返しますel

ドキュメントthis.$によると、これを行うと、セレクターで指定された要素を取得するためのクエリは、ビューの要素(たとえばel)内でスコープされます。スコープの意味は次のとおりです。jQuerycontext

したがってthis.$('#new-todo')、と同じではありませんjQuery('#new-todo')

于 2013-03-04T05:42:16.477 に答える