【问题标题】:jQuery selector syntax gives Firefox warningjQuery 选择器语法给 Firefox 警告
【发布时间】:2009-12-17 17:03:29
【问题描述】:

以下代码

stringref = "tab_2";
jQuery('.someclass a:not(.someclass #a_someclass_'+stringref+')').css('color', '#000');

在 FF 3.5.5 错误控制台中给了我这个警告,我不知道为什么:

Warning: Missing closing ')' in negation pseudo-class '#a_someclass_tab_2'.

是我的语法让我失败了还是 FF 疯了?

【问题讨论】:

  • 我看不出有什么问题。并且似乎在 FF 3.5.6 中运行良好:jsbin.com/aroli(可通过 jsbin.com/aroli/edit#javascript 编辑)
  • 你的代码 sn-p 在 FF 3.5.6 上没有收到任何警告。
  • 哇,这是一个非常好的资源!我从来不知道 jsbin 的存在......(并确认在 Opera 中工作,一切都会好起来的)。
  • 你们都在正确的轨道上,谢谢大家的及时帮助!

标签: jquery firefox syntax append warnings


【解决方案1】:

我认为您的选择器太复杂了——我认为:not() 伪类中不允许有空格。您是否尝试匹配没有给定 ID 的 .someclass 的后代 a?如果是这样,只需删除 :not() 中的 .someclass

【讨论】:

  • 我同意,它适用于 AFAIK,但它有点令人费解。我会这样做:jQuery('.someclass a').not('#a_someclass_' + stringref + ')').css('color, '#000');
  • 引用文档“从 jQuery 1.3 开始:not() 还支持用逗号分隔的选择器和复杂的选择器,例如::not(div a) 和 :not(div,a)。” docs.jquery.com/Selectors/not
  • 数字,通常我在错误的地方寻找可能的问题。成功了,戴夫:D 非常感谢,谢谢!
【解决方案2】:

Firefox (3.5.6) 确实会引发警告(如果您在 Firebug 中没有看到它,那是因为您没有启用“显示 CSS 错误” - 请参阅 Firebug 控制台选项卡)。

Firefox 以一种误报的方式将 jQuery 选择器语法解析为不兼容的 CSS。忽略这个 FF 警告是安全的(记住这不是错误)。

【讨论】:

    【解决方案3】:

    我对 Dave 表示赞同,因为它很可能是您的选择器中的空格。

    与 CSS 标准相比,jQuery 中的 :not() 语法得到了增强,因此解析器似乎发出了警告,因为它只检查 CSS 合规性。

    【讨论】:

    • @brianpeiris 这实际上不是错误,而是警告。因此,请确保您已启用该功能。他的代码实际上没有问题,这是解析器发现的误报。
    • 你是对的。我做了一些挖掘; jQuery 在 FF 中默认为 document.querySelectorAll,所以运行这个:document.querySelectorAll('.someclass a:not(.someclass #a_someclass_tab_2)'); 会给你一个异常一个警告。 jQuery 然后诉诸 Sizzle 来完成选择。
    【解决方案4】:

    语法看起来不错,没有给我任何错误。但我会稍微简化一下,这应该可以帮助您避免错误触发的警告。

    var stringref = "tab_2";
    jQuery('a.someclass:not(#a_someclass_'+stringref+')').css('color', '#000');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-10
      • 1970-01-01
      相关资源
      最近更新 更多