1
38
我觉得你做不到。它 应该 铍:
这确实是一个CSS选择器(在现代浏览器中)。用javascript字符串文字表示,您自然需要另一轮转义:
但这在jquery中不起作用,因为它的选择器解析器并不完全符合标准。它使用这个regex来解析
\三是含有开场白的组,奇怪的是允许有多个开场白,或者根本没有开场白。*?然后可以解析任何字符, 包括引号 直到它碰到第一个字符,结束匹配。没有反斜杠转义CSS特殊字符的规定,因此在jquery中不能匹配任意字符串值。 (再次,regex解析器丢失。) 但好消息是,您不必依赖jquery选择器;您可以使用非常好的DOM方法,尤其是htmlselectelement.options:
这比让jquery费力地解析和实现选择器要简单和快很多倍,而且您可以使用任何您喜欢的值字符串,而不必担心转义特殊字符。 |
2
51
我使用这个函数来转义jquery选择器。它基本上可以避开所有可疑的问题,但可能过于激进。 function escapeStr(str) { if (str) return str.replace(/([ #;?%&,.+*~\':"!^$[\]()=>|\/@])/g,'\\$1'); return str; } |
3
9
使用
|
4
5
我发现您可以使用\\来转义选择器。把它想象成一个\对regex和一个逃避regex。 例子:
|
5
3
如果您试图以编程方式进行转义,则只需要一组斜杠。这行不通:
但这将:
这也将是:
可以使用此javascript生成正确转义的选择器:
下面是一个JS小提琴,它显示了一些奇怪的行为: |
6
2
问题是由HTML实体引起的;该“
Bobines提供的示例也可以这样说;请注意,以下内容不适用于Win+FF3上的jQuery 1.32:
但是,将实体更改为文本确实会找到所需的值:
当然,这里有一个问题,因为您指定的值不是您要查找的确切值。这也可以通过添加一个助手函数来纠正:
现在一起:
现在,您正在搜索的输入值与select元素的值完全匹配。 这也可以使用jquery方法编写:
最后,作为一个插件,因为它们很容易制作:
|
7
1
jquery的论坛有一个很好的解决方案: 他们建议的这个稍微修改过的版本也是空安全的。
|
8
1
|
luke · jQuery中的:valid和:invalid选择器 7 年前 |
Ian Vink · 向有条件的儿童添加类 7 年前 |
LMAOman · jQuery多选择器语法 7 年前 |
jayjaypg22 · 在多选择器中使用变量 7 年前 |
feetwet · 为什么是选择器。文本获取内部函数值? 7 年前 |
LeBlaireau · Jquery-使用数据属性选择父项 7 年前 |
Dipak · 如何显示当前李的独生子女并隐藏其他李子女 7 年前 |
TWiStErRob · 用于表中标签同级的jQuery选择器 7 年前 |
ToniWidmo · 在jquery中转义select选项值 7 年前 |