10

我有一个要调用的 html ID。它有一个像这样的特定名称构建name_|_anyting 但是当我尝试使用 Jquery 的选择器获取 elemetn 时出现错误

$("#name_|_anyting")

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

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

4

3 回答 3

14

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

$("#name_\\|_anything")
于 2012-09-06T18:32:13.427 回答
6

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

选择器

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

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

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

于 2012-09-07T08:20:28.770 回答
0

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

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

和(来自文档)

$( "div" ).find( "." + $.escapeSelector( ".box" ) );
于 2017-11-07T20:30:29.167 回答