0

我读了几个关于类似问题的答案,人们总是说单引号和双引号之间没有区别。问题是我有一小行代码似乎很重要......

$("li[data-type|='veg']").append(' (v)');

这段代码做我想让他做的事情:在链接末尾放一个(v)但是这段代码:

$("li[data-type|="veg"]").append(' (v)');

不起作用。为什么?和浏览器有关系吗?我是 jquery 的新手,这是我第一次看到报价的类型有所不同。

谢谢

4

3 回答 3

1

这就是js的解析方式。您必须记住,您将 STRING 作为参数传递给 jquery 函数。在这个特定的字符串中,有一个 jquery 解析的表达式(一个选择器),它可以包含一个引号。如果您使用相同类型的引号,您会意外终止字符串,而不是将其插入到字符串中。如果您注意到字符串中的颜色变化...

所以你必须用一个反斜杠 \" 来转义它,它实际上告诉解析器忽略它(它只是字符串的一部分),这样你的字符串就可以保持完整。如果你在字符串中使用“不匹配”的引号,你就是 kosher .

于 2015-03-02T18:58:49.873 回答
1

您需要"通过添加\:来转义\"

是许多其他特殊字符的列表,以及如何转义它们。

于 2015-03-02T18:56:24.923 回答
0

以双引号开头的字符串可以包含单引号,反之亦然,无需转义。

这两个都是有效的:

$("li[data-type|='veg']");
$('li[data-type|="veg"]');

但是,如果您在开始字符串的字符串中使用相同的引号,则需要转义它们

$("li[data-type|=\"veg\"]");

这与 jQuery 无关。这就是 javascript 处理字符串的方式

于 2015-03-02T19:16:43.703 回答