Uncaught Error: Syntax error, unrecognized expression: with double equal in selector ==

Uncaught Error: Syntax error, unrecognized expression: with double equal in selector ==

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

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

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

在 devtools 控制台上有效

$('#AQMkADFGFGDFGDFGwYWIxLTU1ADI4LTAwAi0wMAoALgAAA1IXzflHRQlLlY3LIdjzH3MBADg_s4AQY3NEqDFmBjvfdZIAAAIBDwAAAA')

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

 $('#AQMkADFGFGDFGDFGwYWIxLTU1ADI4LTAwAi0wMAoALgAAA1IXzflHRQlLlY3LIdjzH3MBADg_s4AQY3NEqDFmBjvfdZIAAAIBDwAAAA==')
  1. 如果不知道结构会发生变化,省去自己的麻烦,select 通过结构而不是 ID。

  2. 如果您必须通过 ID select,请使用属性 select 或:

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

    escape the equals signs:

    $('#AQMkADFGFGDFGDFGwYWIxLTU1ADI4LTAwAi0wMAoALgAAA1IXzflHRQlLlY3LIdjzH3MBADg_s4AQY3NEqDFmBjvfdZIAAAIBDwAAAA\=\=')
    

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

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

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