直接来自 jquery docs:
如果您希望使用任何元字符(例如!"#$%&'()*+,./:;<=>?@[\]^&a{|}~)
名称的文字部分,您必须使用两个反斜杠转义该字符:\。例如,如果您有一个带有 的元素id="foo.bar"
,您可以使用选择器$("#foo\\.bar")
。
我想知道有没有什么函数可以帮助我摆脱那些元字符?</p>
直接来自 jquery docs:
如果您希望使用任何元字符(例如!"#$%&'()*+,./:;<=>?@[\]^&a{|}~)
名称的文字部分,您必须使用两个反斜杠转义该字符:\。例如,如果您有一个带有 的元素id="foo.bar"
,您可以使用选择器$("#foo\\.bar")
。
我想知道有没有什么函数可以帮助我摆脱那些元字符?</p>
看看这个关于 jQuery 错误的视频,作者有一个他写的函数,它使用正则表达式来正确地转义所有 jQuery 选择器@52:18。旁注:视频很棒,每个使用 jQuery 的开发人员都应该观看。
为后人抄录:
String.prototype.escapeSelector = function () {
return this.replace(
/([$%&()*+,./:;<=>?@\[\\\]^\{|}~])/g,
'\\$1'
);
};
你会这样使用它:
$('#' + 'foo.bar'.escapeSelector());