2012-12-05 44 views
2

我正在coffeescript中的backbone.js中工作,我试图使用'where'函数从集合中选择一个模型。我传递一个字符串变量作为第二个参数,并且该字符串是通过在span元素上返回一个jQuery .text()函数来分配的。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

+1

如果您删除引号''e.target''? – dfsq

+0

你尝试过var value = ...吗? –

回答

0

原来,检查value.length是关键。出于某种原因,它有点像36个字符。我试着在我的haml模板中调用那个变量的.strip,但额外的空白不是来自ruby的一面。

我刚刚结束了使用jQuery的.trim()函数。

这是我的新任务:

fontName = $(e.target).text().trim() 
3

试试这个:

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

没有引号e.target

1

问题不是.text(),它是您的选择器; 'e.target'不是有效的选择器。您可能的意思是:

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

原样,在空对象上调用.text()返回空白。

通过删除引号,您实际上引用了事件对象的target属性,该属性直接对应于元素。你以前有一个<e>元素的选择器字符串,class='target',这显然不是你想要的。

相关问题