Jquery语法错误,ID选择器上无法识别的表达式

问题描述:

使用angular和jquery滚动到基于他的位置哈希字符串的元素。 在我的情况下,我需要在字符串中包含'?'字符,但它似乎像jquery有这个问题。Jquery语法错误,ID选择器上无法识别的表达式

这是链接:

<a href="#/faq#whenAreLotteryResultsUpdatedOnTheSite?">when Are Lottery Results Updated OnThe Site </a> 

这是jQuery代码:

var elem = '#' + $location.hash(); 
console.log($(elem)); 

错误:

Error: Syntax error, unrecognized expression: #whenAreLotteryResultsUpdatedOnTheSite? 

任何溶液?

+0

你忘了'$()'或类似的东西吗? – Itay 2015-02-08 08:52:08

是的,jQuery将拒绝在CSS选择器中选择带有特殊字符的元素。你只需要与\\逃脱他们:

var elem = $location.hash().replace(/\?/, '\\\\?'); 

这将正确转义字符?

另请注意,location.hash将包含前导#,因此您不需要再添加一个。

+0

我试过你的代码,我得到这个:#whenAreLotteryResultsUpdatedOnTheSite \\?并且在角函数中哈希不包括 – Bazinga 2015-02-08 09:04:04

+0

是的,这是你所需要的,你需要用''''双'''来转义'''所以jQuery可以使用它。 – dfsq 2015-02-08 09:04:51

+0

错误:语法错误,无法识别的表达式:#whenAreLotteryResultsUpdatedOnTheSite \\?当我做这个console.log($(elem)) – Bazinga 2015-02-08 09:06:46