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

时间:2015-02-08 08:49:53

标签: javascript jquery angularjs

我使用angular和jquery滚动到他位置哈希字符串的元素库。 在我的情况下,我需要在字符串中包含'?' char,但看起来jquery有问题。

这是链接:

<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?

任何解决方案?

1 个答案:

答案 0 :(得分:1)

是的,jQuery将拒绝在CSS选择器中选择带有特殊字符的元素。你只需要用\\

来逃避它们
var elem = $location.hash().replace(/\?/, '\\\\?');

这将正确转义?字符。

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