2

私はcoffeescriptのbackbone.jsで作業しており、「where」関数を使用してコレクションからモデルを選択しようとしています。2番目の引数として文字列変数を渡しています。文字列はspan要素のjQuery.text()関数の戻り値によって割り当てられます。

.text()関数から文字列を取得しますが、通常の文字列のように動作しません。変数を手動で割り当てる場合にのみ、変数をwhere()引数として使用できます。

編集: $('e.target')を$(e.target)に変更しましたが、実際に私の要点にあることがわかりました。質問を要約する際に、タイプを間違えただけです。右側で取得している戻り値を以下に示します。

value = $(e.target).text()              # value => 'target text'
value.charAt(0)                           # =>*nothing at all!*  

value = "manually assigned text"          # value => 'manually assigned text'
value.charAt(0)                           # =>* 'm'

詳細を調べるためのスニペットは次のとおりです:https ://gist.github.com/4215344

4

3 に答える 3

3

代わりにこれを試してください:

value = $(e.target).text();

引用符はありませんe.target

于 2012-12-05T13:34:32.090 に答える
1

問題はそうではありません.text()、それはあなたのセレクターです。'e.target'は有効なセレクターではありません。あなたはおそらくするつもりでした:

value = $(e.target).text();

現状では、空のオブジェクトを呼び出すと.text()空白が返されます。

引用符を削除することで、実際にはtarget、要素に直接対応するイベントオブジェクトのプロパティを参照していることになります。<e>以前持っていたのは、要素のセレクター文字列でしたがclass='target'、これは明らかにあなたが望むものではありません。

于 2012-12-05T13:34:42.393 に答える
0

value.lengthを検査することが重要であることがわかりました。どういうわけか36文字くらいでした。hamlテンプレートで変数の.stripを呼び出そうとしましたが、余分な空白がルビー側から来ていませんでした。

jQueryの.trim()関数を使用することになりました。

これが私の新しい割り当てです:

fontName = $(e.target).text().trim()
于 2012-12-05T16:19:30.447 に答える