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

时间:2012-09-06 18:30:34

标签: jquery jquery-selectors

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

$("#name_|_anyting")
  

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

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

3 个答案:

答案 0 :(得分:14)

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

$("#name_\\|_anything")

答案 1 :(得分:5)

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

  

选择器

     

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

     

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

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

答案 2 :(得分:0)

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

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

和(来自文档)

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