如何使用jQuery选择具有非字母数字id的元素?

Dor*_*sey 9 jquery

Axl Rose的wiki页面包含一个id为的元素:

1983.E2.80.931986:_Early_years
Run Code Online (Sandbox Code Playgroud)

我正在使用$('#1983.E2.80.931986:_Early_years')这个元素,但失败了.

如果我想通过id选择这个元素,那么使用正确的选择器是什么?

Tom*_*lak 17

直接来自文档:

如果您希望使用任何元字符(例如 !"#$%&'()*+,./:;<=>?@[\]^&a{|}~)作为名称的文字部分,则必须使用两个反斜杠转义字符:\\.例如,如果您有一个元素id="foo.bar",则可以使用选择器$("#foo\\.bar").

推论:

jQuery.escapeSelector = function(str) {
  return str.replace(/[!"#$%&'()*+,./:;<=>?@\[\\\]^`{|}~]/g, "\\$&");
}

// ...

$('#' + $.escapeSelector('1983.E2.80.931986:_Early_years'))
Run Code Online (Sandbox Code Playgroud)

  • @Dorsey啊,我的错.实际上你必须用一个反斜杠(而不是两个)来逃避角色.文档中提到了两个,因为你必须输入"\\."`来获得`"\."``.我太过于字面意思了.现在它有效. (3认同)