【问题标题】:Uncaught Error: Syntax error, unrecognized expression: with double equal in selector ==未捕获的错误:语法错误,无法识别的表达式:选择器中的双等号 ==
【发布时间】:2018-03-14 16:21:37
【问题描述】:

我在消息 div 上有 office 365 id。比如

<div id="AQMkADAwATM0MDAAMS0wYWIxLTU1ADI4LTAwAi0wMAoALgAAA1IXzflHRQlLlY3LIdjzH3MBADg_s4AQY3NEqDFmBjvfdZIAAAIBDwAAAA==">Message Subject</div>

但是当我在函数中调用它时。它给了jquery-2.1.1.js:2 Uncaught Error: Syntax error, unrecognized expression:

在开发工具控制台上工作

$('#AQMkADFGFGDFGDFGwYWIxLTU1ADI4LTAwAi0wMAoALgAAA1IXzflHRQlLlY3LIdjzH3MBADg_s4AQY3NEqDFmBjvfdZIAAAIBDwAAAA')

在 devtools 控制台上不起作用。我想解决这个问题,因为 Office 365 消息 ID 通常在结尾处具有双重相等 ==

 $('#AQMkADFGFGDFGDFGwYWIxLTU1ADI4LTAwAi0wMAoALgAAA1IXzflHRQlLlY3LIdjzH3MBADg_s4AQY3NEqDFmBjvfdZIAAAIBDwAAAA==')

【问题讨论】:

标签: javascript jquery jquery-selectors


【解决方案1】:
  1. 如果不知道结构会发生变化,请省去头疼的问题,并按结构而不是 ID 进行选择。

  2. 如果您必须按 ID 选择,请使用属性选择器:

    $('[id="AQMkADFGFGDFGDFGwYWIxLTU1ADI4LTAwAi0wMAoALgAAA1IXzflHRQlLlY3LIdjzH3MBADg_s4AQY3NEqDFmBjvfdZIAAAIBDwAAAA=="]')
    

    escape the equals signs:

    $('#AQMkADFGFGDFGDFGwYWIxLTU1ADI4LTAwAi0wMAoALgAAA1IXzflHRQlLlY3LIdjzH3MBADg_s4AQY3NEqDFmBjvfdZIAAAIBDwAAAA\\=\\=')
    

【讨论】:

  • @Cemal:我故意忽略了这一点,因为这不是问题。
  • @BoltClock 让我试试这个
  • 是的,这行得通,谢谢!我实际上使用了 Sphinx 替换功能,因为 == 有时也在中间。
【解决方案2】:

根本原因是jQuery使用CSS语法来选择元素

您可以使用一个正则表达式通过双反斜杠来转义具有 CSS 表示法中使用的字符的 ID。

console.log($("#"+"AQMkADAwATM0MDAAMS0wYWIxLTU1ADI4LTAwAi0wMAoALgAAA1IXzflHRQlLlY3LIdjzH3MBADg_s4AQY3NEqDFmBjvfdZIAAAIBDwAAAA==".replace( /(:|\.|\[|\]|,|=|@)/g, "\\$1" )).text())
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="AQMkADAwATM0MDAAMS0wYWIxLTU1ADI4LTAwAi0wMAoALgAAA1IXzflHRQlLlY3LIdjzH3MBADg_s4AQY3NEqDFmBjvfdZIAAAIBDwAAAA==">Message Subject</div>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    • 2016-05-28
    • 1970-01-01
    • 2017-06-06
    • 2019-02-18
    • 2015-11-13
    • 2017-11-24
    相关资源
    最近更新 更多