未封闭的方括号不会在jquery中抛出错误

时间:2017-07-14 16:51:43

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

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

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

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

为什么当方括号未关闭时,jquery不会抛出错误?

3 个答案:

答案 0 :(得分:1)

这看起来像是一个Safari问题。另一个原因是因为结束括号位于jQuery选择器内。 Safari可能只关心jQuery选择器之外的JavaScript代码。它只是一个可以有不同格式的文本,jQuery只是试图解释它。

如果它会引发错误,您也可以尝试以下代码。

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

答案 1 :(得分:1)

CSS规范说可以放弃支架。由于jQuery首先将选择器传递给本机querySelectorAll以获得性能,并且该方法不会抛出错误(加上它返回正确的元素),因此未检测到缺少的括号。如果您使用了像:animated这样的特定于jQuery的选择器,那么该字符串将通过jQuery的Sizzle选择器引擎,您将收到错误。

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

答案 2 :(得分:1)

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

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

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