jquery选择器不接受管道字符|?

我有一个我想打电话的HTML ID。 它有一个特定的名称构建,就像这个name_|_anyting但当我尝试使用Jquery的选择器获取elemetn时,我得到一个错误

 $("#name_|_anyting") 

错误:语法错误,无法识别的表达式:| _anyting

所以我的问题是:在jquery选择器中不允许使用管道字符作为ID吗?

| 是选择器语法中的特殊字符,这意味着您不能直接在ID选择器中使用它。 如果您无法更改标记中的ID以适应您的选择器,则必须使用转义选择器来欺骗jQuery以选择元素:

 $("#name_\\|_anything") 

管道字符“|” 必须使用双反斜杠进行转义。

选择

借用CSS 1-3,然后添加自己的,jQuery提供了一组function强大的工具,用于匹配文档中的一组元素。

如果你想使用任何元字符(例如!“#$%&’()* +,。/:; <=>?@ [] ^`{ | } 〜****)作为在名称的文字部分,你必须用两个反斜杠来转义字符:\\。例如,如果你有一个id =“foo.bar”的元素,你可以使用选择器$(“#foo \\。bar” W3C CSS规范包含有关有效CSS选择器的完整规则集。另外有用的是Mathias Bynens关于标识符的CSS字符转义序列的博客条目。

http://api.jquery.com/category/selectors/

要更新旧问题…在jQuery 3.0中,您现在可以使用$ .escapeSelector(selector) 。 例子:

 $('#' + $.escapeSelector('crazy|id.selector') + 'Wrapper').show(); $('.' + $.escapeSelector(divClassVariable)).each(function() {...}) 

和(来自文档)

 $( "div" ).find( "." + $.escapeSelector( ".box" ) );