未捕获的错误:语法错误,无法识别的表达式:在选择器中使用双等于==

时间:2018-03-14 16:21:38

标签: javascript jquery jquery-selectors

我在消息div上有办公室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==')

2 个答案:

答案 0 :(得分:4)

  1. 如果不知道结构发生变化,请为您节省时间,并按结构而不是ID进行选择。

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

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

    escape the equals signs

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

答案 1 :(得分:3)

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

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

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