要使用任何元字符( such as !"#$%&'()*+,./:;<=>?@[\]^'{|}~)作为名称的文字部分,必须使用两个反斜杠进行转义:\\例如,具有id="foo.bar"的元素可以使用选择器$("#foo\\.bar")。 这里有一个函数来转义特殊字符并返回一个有效的jQuery选择器。在用途:之前将字符串传递给此函数:
function jqSelector(str)
{
return str.replace(/([;&,\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g, '\\$1');
}
4条答案
按热度按时间6gpjuf901#
要使用任何元字符
( such as !"#$%&'()*+,./:;<=>?@[\]^'{|}~)
作为名称的文字部分,必须使用两个反斜杠进行转义:\\
例如,具有id="foo.bar"
的元素可以使用选择器$("#foo\\.bar")
。这里有一个函数来转义特殊字符并返回一个有效的jQuery选择器。在用途:之前将字符串传递给此函数:
zzwlnbp82#
几天前我也遇到了同样的问题,但是由于一些奇怪的原因,泽塔的解决方案对我不起作用,所以我想出了
它不是完美的,但它工作:)
编辑
更好的RegEX:
如果你想消除括号之间的所有内容,以便包含工作,你可以用途:
lxkprmvk3#
与属性值选择器一样,:contains()括号内的文本可以写成纯单词或用引号括起来。(source)
所以简单地使用
请注意,如果
name
中有引号的话,您需要对引号进行转义。qzlgjiam4#
您不必为此实现自己的解决方案(再也不用了?)。使用jQuery.escapeSelector():