是否有任何函数可以帮助逃避jquery选择器中包含的所有元字符?

直接来自jquery文档:

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

我想知道是否有任何function可以帮助我逃避那些元字符?

看看这个关于jQuery错误的video ,作者有一个函数,他使用正则表达式来正确地逃避所有jQuery选择器@ 52:18。 旁注:video很棒,每个使用jQuery的开发者都应该观看它。

为后代转录:

 String.prototype.escapeSelector = function () { return this.replace( /([$%&()*+,./:;<=>?@\[\\\]^\{|}~])/g, '\\$1' ); }; 

你会像这样使用它:

 $('#' + 'foo.bar'.escapeSelector());