我有一个要调用的 html ID。它有一个像这样的特定名称构建name_|_anyting
但是当我尝试使用 Jquery 的选择器获取 elemetn 时出现错误
$("#name_|_anyting")
错误:语法错误,无法识别的表达式:|_anyting
所以我的问题是:在 jquery 选择器中是否不允许管道字符作为 Id?
我有一个要调用的 html ID。它有一个像这样的特定名称构建name_|_anyting
但是当我尝试使用 Jquery 的选择器获取 elemetn 时出现错误
$("#name_|_anyting")
错误:语法错误,无法识别的表达式:|_anyting
所以我的问题是:在 jquery 选择器中是否不允许管道字符作为 Id?
|
是选择器语法中的特殊字符,这意味着您不能直接在 ID 选择器中使用它。如果您无法更改标记中的 ID 以适应您的选择器,您将不得不转义选择器以诱使 jQuery 选择元素:
$("#name_\\|_anything")
管道字符“|” 必须使用双反斜杠进行转义。
选择器
借用 CSS 1-3,然后添加自己的,jQuery 提供了一组强大的工具来匹配文档中的一组元素。
如果您希望使用任何元字符(例如!"#$%&'()*+,./:;<=>?@[]^`{ | } ~**** )作为名称的文字部分,您必须使用两个反斜杠转义字符:\\。例如,如果您有一个 id="foo.bar" 的元素,您可以使用选择器 $("#foo\\.bar" ). W3C CSS 规范包含有关有效 CSS 选择器的完整规则集。Mathias Bynens 关于标识符的 CSS 字符转义序列的博客条目也很有用。
更新一个旧问题...在 jQuery 3.0 中,您现在可以使用$.escapeSelector(selector)。例子:
$('#' + $.escapeSelector('crazy|id.selector') + 'Wrapper').show();
$('.' + $.escapeSelector(divClassVariable)).each(function() {...})
和(来自文档)
$( "div" ).find( "." + $.escapeSelector( ".box" ) );