2014-09-10 69 views
1

我有一个元素在我的HTML属性“测试”具有值“\”。 例如如何搜索属性值为“”的元素?

<e1> 
<e2 test="\"></e2> 
</e1> 

现在,当我做了查找来获得要素如下: elem.find( '[值= “\”]') 我获得以下错误:

error: Syntax error, unrecognized expression: [value="\"] 

任何想法关于如何解决这个问题?

+2

阅读有关特殊字符http://api.jquery.com/category/selectors/的文档,您的示例中没有“value”属性 – epascarello 2014-09-10 20:00:39

回答

1

在文档中它说你需要添加双斜杠来逃避特殊字符。但是因为\本身就是一个逃避角色,所以它需要翻倍。因此,您需要有4个斜杠才能匹配单斜杠。

$('[test="\\\\"]') 

而我在我的评论中提到,你没有属性值,它是测试。 jQuery documentation有一个需要转义的选择器中所有特殊字符的列表。

+0

那么,我们如何概括这个属性值呢?可以说属性值是一个用户输入,因此它可以包含任何特殊字符以及正常字符。现在我怎么能概括这种方法来正确搜索一个属性值,而不管它是否包含特殊字符? – 2014-09-10 20:44:19

+0

你将不得不编写一个函数,用一个转义序列替换字符串中的特殊字符。 – epascarello 2014-09-10 22:49:47

1

通过@卡尔 - 安德烈·加格农更正:它应该是\\\\test=,不value=

$('e1').find('[test="\\\\"]'); 

Fiddle

+3

实际上应该是四倍:''[test =“\\\\ “]'' – 2014-09-10 20:04:45

+0

答案是错误的。 \\不匹配一个\ – epascarello 2014-09-10 20:05:20

+2

@Regent,因为第一个'\'转义了第二个''''。当解析成正则表达式时,逃逸的'\'将会退出'''。 – 2014-09-10 20:07:17