我使用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?
任何解决方案?
答案 0 :(得分:1)
是的,jQuery将拒绝在CSS选择器中选择带有特殊字符的元素。你只需要用\\
:
var elem = $location.hash().replace(/\?/, '\\\\?');
这将正确转义?
字符。
另请注意,location.hash已包含前导 #
,因此您不需要再添加一个。