jQuery .text()返回的字符串不像字符串那样

时间:2012-12-05 13:27:53

标签: javascript jquery ruby-on-rails backbone.js

我在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

3 个答案:

答案 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()