【问题标题】:Unclosed square bracket doesn't throw error in jquery未闭合的方括号不会在 jquery 中引发错误
【发布时间】:2017-12-19 20:33:15
【问题描述】:
$('#parent_tab [href="#tab1"').click();

上面的行工作正常,标签在其他浏览器中被选中,但不是 safari。我必须按如下方式关闭 href 的方括号才能使其在 Safari 中工作。

$('#parent_tab [href="#tab1"]').click();

为什么jquery在方括号不闭合时没有报错?

【问题讨论】:

    标签: jquery google-chrome jquery-ui safari square-bracket


    【解决方案1】:

    这似乎是 Safari 的问题。另一个原因是右括号在 jQuery 选择器内。 Safari 可能只关心 jQuery 选择器之外的 JavaScript 代码。它只是一个可以有不同格式的文本,jQuery 只是试图解释它。

    如果会报错,你也可以试试下面的代码。

    $("#parent_tab [href='#tab1'").click();
    

    【讨论】:

    • 这一行和我报告的一样。它不会在任何浏览器中引发错误
    【解决方案2】:

    CSS 规范说可以去掉括号。由于 jQuery 首先将选择器传递给本机 querySelectorAll 以提高性能,并且该方法不会引发错误(加上它返回正确的元素),因此不会检测到缺少的括号。如果你使用像 :animated 这样的 jQuery 特定选择器,字符串会通过 jQuery 的 Sizzle 选择器引擎,你会得到一个错误。

    https://bugs.jquery.com/ticket/15199

    【讨论】:

      【解决方案3】:

      我只在 Safari 上遇到了完全相同的错误。我在其他几个浏览器上尝试了该网站,都没有问题。

      有趣的是,在 Chrome 中,当我在开发工具窗口中查看源代码时,它似乎会自动添加缺少的括号。

      Chrome 版本:67.0.3396.99(官方版本)(64 位)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-19
        • 2014-11-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多