2015-02-08 86 views
1

使用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

回答

1

是的,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

相關問題