【问题标题】:Unrecognized expression: :nth-child无法识别的表达式::nth-child
【发布时间】:2023-03-06 03:13:01
【问题描述】:

我收到以下错误:

无法识别的表达式::nth-child

以下是与此问题相关的代码:

var path = $("#quickSearchContainer > ul > li:nth-child(i + 1)");

function resetSearch() {                      
  for (i = 0; i < SectorCheck.length; i++) {            
    console.log(path.text());
    console.log(SectorCheck[i]);
    if ((path.text()) === SectorCheck[i]) {
      path.hide()
    }   
  }
}

注意:如果我只将(i + 1) 更改为一个数字,它可以工作,但这不是我们所需要的。

【问题讨论】:

  • i 是什么意思? CSS 选择器没有变量。另外:我强烈怀疑:nth-child 不是你想要的。这并不意味着“ul 中的第 n 个 li”,而是表示“ul 中的一个 li,它也是 ul 的第 n 个孩子”(在 ul 的情况下)和li 可能是同一件事,但在大多数情况下不会)。

标签: jquery jquery-selectors


【解决方案1】:

我怀疑您正在尝试使用 i 索引到 path。如果是这样,就不会神奇地将您的 i 变量的值插入到选择器中,尤其是在它已经被执行的情况下。

要索引到 path,请使用 [i](获取原始 DOM 元素)或 .eq(i)(获取该位置元素周围的 jQuery 包装器),请参阅 cmets:

var path = $("#quickSearchContainer > ul > li"); // Removed :nth-child(i + 1)

function resetSearch(){

    for (var i = 0; i < SectorCheck.length; i++) {  
    //   ^^^----- remember to declare your variables

        // Get the entry for `i` (as a jQuery object)
        var entry = path.eq(i);
        if (entry.text() === SectorCheck[i]) {
            entry.hide()
        }   
    }
}

另请注意,您需要声明i。您的代码因未声明而成为我所说的 The Horror of Implicit Globals 的牺牲品。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多