使用多个选择器时,Uncaught SyntaxError: Invalid or unexpected token

Posted

技术标签:

【中文标题】使用多个选择器时,Uncaught SyntaxError: Invalid or unexpected token【英文标题】:When use multiple selector, Uncaught SyntaxError: Invalid or unexpected token 【发布时间】:2021-11-15 23:59:19 【问题描述】:

我收到此错误。我想添加多个选择器,但它给出了错误。问题是什么?

 jQuery(document).ready(function($) 
            $("nav.navbar.bootsnav.menu-style1 ul.dropdown-menu.megamenu-content .title,
                .pagination>li>a,
                .ulockd-title-icon,
    .fancybox-gallery-slider .owl-prev,
    .fancybox-gallery-slider .owl-next,
    .team-icon a,
    .twitter.style2 ul li a,
    .text-thm, .text-thm2").css("color", textColor);;
            return false;
    );

【问题讨论】:

问题是你不能在 JS 中的字符串中放置换行符。请改用模板文字。 单行写,会很长,读起来很费劲。有什么办法可以写成多行吗? "..." + [newline] "..." + [newline] 是的,使用我提到的模板文字:$(`nav.navbar.bootsnav.... `).css(...)。话虽如此,你真的不应该有那么长的选择器。在所有这些元素上放置一个公共类,然后选择它。 这是另一个选项。我个人不喜欢在 \ 中结束一行,因为这会导致许多隐藏的错字 - 例如“\”是不同但不可见的:***.com/questions/21176327/… 【参考方案1】:

您可以通过多种方式解决此错误:

在每个换行符之前使用\

$("nav.navbar.bootsnav.menu-style1 ul.dropdown-menu.megamenu-content .title, \
    .pagination>li>a, \
    .ulockd-title-icon, \
    .fancybox-gallery-slider .owl-prev, \
    .fancybox-gallery-slider .owl-next, \
    .team-icon a, \
    .twitter.style2 ul li a, \
    .text-thm, .text-thm2").css("color", textColor);

使用字符串连接

$("nav.navbar.bootsnav.menu-style1 ul.dropdown-menu.megamenu-content .title,"
  + ".pagination>li>a,"
  + ".ulockd-title-icon,"
  + ".fancybox-gallery-slider .owl-prev,"
  + ".fancybox-gallery-slider .owl-next,"
  + ".team-icon a,"
  + ".twitter.style2 ul li a,"
  + ".text-thm,"
  + ".text-thm2").css("color", textColor);

从数组构建选择器

let selectors = [
  "nav.navbar.bootsnav.menu-style1 ul.dropdown-menu.megamenu-content .title",
  ".pagination>li>a",
  ".ulockd-title-icon",
  ".fancybox-gallery-slider .owl-prev",
  ".fancybox-gallery-slider .owl-next",
  ".team-icon a",
  ".twitter.style2 ul li a",
  ".text-thm",
  ".text-thm2"
];
$(selectors.join(',')).css("color", textColor);

使用模板文字

$(`nav.navbar.bootsnav.menu-style1 ul.dropdown-menu.megamenu-content .title,
    .pagination>li>a,
    .ulockd-title-icon,
    .fancybox-gallery-slider .owl-prev,
    .fancybox-gallery-slider .owl-next,
    .team-icon a,
    .twitter.style2 ul li a,
    .text-thm, .text-thm2`).css("color", textColor);

或者给他们一个通用的类

正如您所见,拥有很多这样的选择器并不容易使用。更不用说随着时间的推移管理变更。

为什么不给他们一个像changeable-color 这样的通用类并且只选择那个。更易于阅读和维护。

【讨论】:

有什么方法/工具可以节省添加加号的时间吗? 是的,它们之间只使用一个公共类。我基本上把它写出来让你复制和粘贴,所以现在就使用它。你可以使用正则表达式来重写代码,但我不相信你已经准备好了。 如果你问我,我更喜欢选择器数组的方式。在我看来更容易维护。

以上是关于使用多个选择器时,Uncaught SyntaxError: Invalid or unexpected token的主要内容,如果未能解决你的问题,请参考以下文章

当用户取消意图选择器时是不是有事件?

PHP:使用mysqli(syntaxe objet)

无法使用 UIDocumentPickerViewController 选择多个文件

使用多个分类器时 - 如何衡量集成的性能? [SciKit 学习]

我可以使用括号分隔多个选择器吗?

使用 AJAX 选择下拉菜单选择器时遇到问题