【问题标题】:Escape characters in jQuery variables not workingjQuery变量中的转义字符不起作用
【发布时间】:2016-06-15 19:38:25
【问题描述】:

在 jQuery 中使用选择器时,我遇到了在变量中发现的转义字符(即句点)的问题。我打算把这些都写出来,但在 Chrome 中截取我的控制台窗口更容易。

看起来变量和明文版本匹配。我希望 $('#'+escName) 返回 div,就像 $('#jeffrey\\.lamb') 返回一个 div 一样。它不是。为什么?

【问题讨论】:

  • 看起来您在 escName 中添加了太多反斜杠。它应该只是"jeffrey\\.lamb" 你只需要在. 之前的字符串中添加一个反斜杠,以便 jQuery/Sizzle 将其识别为转义。
  • 这是我尝试的第一件事。我曾经(我认为是在 perl 中)在变量中使用时必须逃避转义,所以我也试了一下。
  • 它对我有用。请edit您的问题并提供Minimal, Complete, and Verifiable example
  • @Pointy,你是对的。定义变量时,我不得不双重转义。这导致变量被单独转义。 jQuery 然后只需要一个反斜杠就可以正确使用该变量。谢谢你。如果您添加答案,我会接受。

标签: javascript jquery escaping


【解决方案1】:

您必须考虑将检查您的字符串值的各个解析器。第一个当然是 JavaScript 解析器本身。反斜杠字符在字符串语法中是有意义的,所以如果你想在字符串中使用一个反斜杠,它需要加倍。

在将字符串从源代码解析为内部字符串值之后,接下来要注意其内容(在这种情况下)是 CSS 选择器评估器(Sizzle 或原生 querySelector 代码;不确定在带有这样转义的字符串的情况下是哪个)。该代码只需要一个反斜杠来引用.,以免被解释为引入类名匹配。

因此,在这种情况下,escName = "jeffrey\\.lamb"; 就是您所需要的。

【讨论】:

    猜你喜欢
    • 2020-04-03
    • 1970-01-01
    • 2014-06-08
    • 1970-01-01
    • 2017-12-02
    • 2015-01-22
    • 2021-12-25
    • 2014-01-10
    • 1970-01-01
    相关资源
    最近更新 更多