jQuery $(“#myComplexId”)。remove()不使用特殊字符vs doc.getElementById()。remove()工作正常

时间:2017-05-31 10:11:06

标签: javascript jquery

所以我正在使用:

let idOfParentElement= "xd%63-3?',";
$(`#${idOfParentElement}`).remove();  //does not work

但是当我通过id方法使用document get元素并删除它时工作正常:

document.getElementById(`${idOfParentElement}`).remove();

为什么jQuery方法不能处理复杂的ID?

1 个答案:

答案 0 :(得分:2)

根据jQuery docs of selectors

  

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

所以你需要在选择器中转义任何元字符,它在jQuery中具有特殊含义。您可以使用jQuery.escapeSelector()方法转义这些元字符(在jQuery版本3中添加)。