【问题标题】:jquery syntax error unrecognised expression [duplicate]jquery语法错误无法识别的表达式[重复]
【发布时间】:2023-04-02 17:55:01
【问题描述】:

我很难弄清楚为什么我的表情无法识别。

我的 html 元素如下所示:

<tr class="beampower_01/target_surface_01-child shown">(...)</tr>

我正在尝试用表达式访问它:

$('.' + $(elemClicked).attr("path")+ '-child');

表达式:

console.log($(elemClicked).attr("path"))

结果:

beampower_01/target_surface_01

我收到的错误是:

未捕获的错误:语法错误,无法识别的表达式:.beampower_01/target_surface_01-child

哪里出错了?

【问题讨论】:

标签: jquery


【解决方案1】:

虽然beampower_01/target_surface_01-child 是放置在元素上的有效类名(请参阅herehere),但.beampower_01/target_surface_01-child 是无效的CSS 类选择器。类选择器中的类名必须是 CSS identifiers:

在 CSS 中,标识符(包括选择器中的元素名称、类和 ID)只能包含字符 [a-zA-Z0-9] 和 ISO 10646 字符 U+00A0 及更高,加上连字符 (-) 和下划线 (@ 987654330@);它们不能以数字、两个连字符或一个连字符后跟一个数字开头。标识符还可以包含转义字符和任何 ISO 10646 字符作为数字代码(请参阅下一项)。例如,标识符“B&W?”可以写成“B&W?”或“B\26 W\3F”。

(这是旧 2.1 规范中的语言,方便引用。有效字符没有改变,参见现代规范中的 herehere。) p>

你不能有这样一个未转义的斜线。

我强烈建议不要在类名中使用斜杠,这样您就不必处理试图逃避它们的问题。但是您可以通过在前面添加反斜杠来转义它们:

$('.' + $(elemClicked).attr("data-path").replace(/\//g, "\\/") + '-child')

现场示例:

$("input[type=button]").on("click", function() {
    const elemClicked = this;
    $('.' + $(elemClicked).attr("data-path").replace(/\//g, "\\/") + '-child')
.css("color", "blue");
});
<table>
    <tbody>
          <tr class="beampower_01/target_surface_01-child shown">
              <td>Hi there</td>
          </tr>
    </tbody>
</table>

<input type="button" data-path="beampower_01/target_surface_01" value="Click me">

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

【讨论】:

    猜你喜欢
    • 2014-08-08
    • 2013-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    • 1970-01-01
    相关资源
    最近更新 更多