我在coffeescript的backbone.js中工作,我正在尝试使用'where'函数从集合中选择一个模型。我传入一个字符串变量作为第二个参数,并通过在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
答案 0 :(得分:3)
请改为尝试:
value = $(e.target).text();
e.target
附近没有引号。
答案 1 :(得分:1)
问题不是.text()
,而是你的选择器; 'e.target'
不是有效的选择器。你可能打算这样做:
value = $(e.target).text();
原样,在空对象上调用.text()
会返回空白。
通过删除引号,您实际上引用了事件对象的target
属性,该属性直接对应于元素。您以前拥有<e>
元素的选择器字符串class='target'
,这显然不是您想要的。
答案 2 :(得分:0)
事实证明,检查value.length是关键。出于某种原因,它有36个字符。我试着在我的haml模板中调用变量那里的.strip,但额外的空格不是来自ruby端。
我最终使用了jQuery的.trim()函数。
这是我的新任务:
fontName = $(e.target).text().trim()