jQuery选择犯规接受管道符|?(jquery selector doesnt accept pi

2019-06-27 22:20发布

我有我试图调用一个HTML ID。 它有一个特定的名字建立这样的name_|_anyting但是当我尝试使用jQuery的选择得到elemetn我得到一个错误

$("#name_|_anyting")

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

所以我的问题是:管道符不jQuery选择允许作为IDS?

Answer 1:

| 在选择语法,这意味着你不能在一个ID选择直接使用特殊字符。 如果你不能改变的ID在您的标记,以适应你的选择,你必须凑合着逃离选择欺骗jQuery的进反正选择元素:

$("#name_\\|_anything")


Answer 2:

竖线“|” 必须使用双反斜线进行转义。

选择

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

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

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



Answer 3:

要更新一个老问题...在jQuery的3.0现在可以使用$ .escapeSelector(选择) 。 例子:

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

和(来自文档)

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


文章来源: jquery selector doesnt accept pipe character |?