【问题标题】:Jquery escape #step unrecognized expressionJquery 转义 #step 无法识别的表达式
【发布时间】:2016-04-24 02:48:10
【问题描述】:

我将 jquery 从 2.14 升级到 2.2.0,但总是出现异常:

未捕获的错误:语法错误,无法识别的表达式: li[data-target^=#step]

代码:

var count = $('li[data-target^=#step]').length;

问题在于#step

如何逃脱?

【问题讨论】:

    标签: jquery


    【解决方案1】:

    从 2.2.0 版开始,当属性值包含 # 字符时,您似乎需要在属性值周围添加引号(值得指出的是,当字符 # 被删除时它可以工作)。

    var count = $('li[data-target^="#step"]').length;
    

    请参阅发行说明下的these comments。显然这是一个错误修复。

    在内部,jQuery 将尝试使用方法.querySelectorAll(),它会抛出一个错误,指出li[data-target^=#step]' 不是一个有效的选择器,(这就是你需要引号的原因):

    未捕获的 SyntaxError:无法在 Document 上执行 querySelectorAllli[data-target^=#step] 不是有效的选择器。

    【讨论】:

      【解决方案2】:

      根据the docs,您应该使用单引号:

      var count = $("li[data-target^='#step']").length;
      

      【讨论】:

      • 我从来没有遇到过任何问题。如果您仔细查看提供的链接,您会发现标题使用一种格式,而正文使用另一种格式。
      猜你喜欢
      • 2012-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多