我有一个我试图打电话的HTML ID。它有一个特定的名称构建,如name_|_anyting
但是当我尝试使用Jquery的选择器获取elemetn时,我收到错误
$("#name_|_anyting")
错误:语法错误,无法识别的表达式:| _anyting
所以我的问题是: 在jquery选择器中不允许使用管道字符作为ID吗?
答案 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字符转义的博客条目标识符的序列。
答案 2 :(得分:0)
更新旧问题...在jQuery 3.0中,您现在可以使用$.escapeSelector(selector)。例子:
$('#' + $.escapeSelector('crazy|id.selector') + 'Wrapper').show();
$('.' + $.escapeSelector(divClassVariable)).each(function() {...})
和(来自文档)
$( "div" ).find( "." + $.escapeSelector( ".box" ) );