Javascript 显然丢失)在jQuery中得到修复:除了Safari之外,其他所有版本都没有(.class)?

Javascript 显然丢失)在jQuery中得到修复:除了Safari之外,其他所有版本都没有(.class)?,javascript,jquery,google-chrome,safari,Javascript,Jquery,Google Chrome,Safari,我的脚本中有一个jQuery语法错误,但只有Safari抛出异常 $("#id:not(.class").length 那家店:没有关门)。在Safari中,长度为0,在所有其他浏览器中,如果不存在错误,则该值是正确的。Chrome、Firefox、Opera和Internet Explorer是否可能在运行中修复这些错误 此外,它似乎不是jQuery固有的,因为即使本机querySelector调用也会恢复选择器文本中的语法错误: document.querySelector('[href^

我的脚本中有一个jQuery语法错误,但只有Safari抛出异常

$("#id:not(.class").length
那家店:没有关门)。在Safari中,长度为0,在所有其他浏览器中,如果不存在错误,则该值是正确的。Chrome、Firefox、Opera和Internet Explorer是否可能在运行中修复这些错误

此外,它似乎不是jQuery固有的,因为即使本机
querySelector
调用也会恢复选择器文本中的语法错误:

document.querySelector('[href^="h'  ) ===
document.querySelector('[href^="h"]'); // true in non-Safari

document.querySelector(':not([X="Y'   ) ===
document.querySelector(':not([X="Y"])'); // true in non-Safari
Safari读取
语法时出错\u ERR:DOM异常12

这应该是

  $("#id:not('.class')").length
而不是

 $("#id:not(.class").length

这真的很吸引人,因为我也问过自己很多次,没有进一步的调查为什么会这样。Chrome有时确实会“忽略”语法错误,例如,当您添加或删除

这可能是一件好事,但有时很难调试。像IE这样的旧浏览器会抛出错误,而新浏览器不会。我不知道这是一个功能还是一个bug:)


我没有这方面的消息来源,但我可以证实我注意到了类似的行为。这很可能与此有关。

是的,我知道。但是为什么Chrome&Co.不抛出一个例外呢?我认为你需要再次阅读这个问题。他知道语法错误。问题是为什么不同的浏览器会做出不同的反应。@Archer这取决于浏览器itself@Amit那么,Chrome和其他浏览器会自行修复类似的错误吗?是的,这完全取决于浏览器。这就是问题所在,所以告诉他如何修复语法错误是不相关的:)+1我认为这个问题是正确的。出于好奇,我也想知道这一点。+1好问题,伪装成一个简单的问题。绝对。这对开发者来说非常重要。Jabaluza,我编辑了你的问题,这样它的意思就更明显了/看起来不再像是语法错误了。欢迎您进行进一步编辑。无论如何,为什么要使用ID为的not类选择器?由于ID必须是唯一的,所以不能有一个ID和一个类,然后有一个ID没有类(或者有一个不同的类)。