未封闭的方括号不会在jquery中引发错误

问题描述 投票:1回答:3

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

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

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

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

jquery google-chrome jquery-ui safari square-bracket
3个回答
1
投票

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

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

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

1
投票

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

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


1
投票

我只得到了与Safari完全相同的错误。我在其他几个浏览器上试过这个网站,他们没有问题。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.